Micron Document
C.S.Burner 🪙 ━►🔥GIT Node

Node / reticulum_mirror / MeshChatX / files / meshchatx / src / frontend / components / messages / ConversationViewer.vue

Displaying Raw • Download

meshchatx/src/frontend/components/messages/ConversationViewer.vue 37d4b317b90c0e7ffb8f9ac47e58263f0c53db7d (37d4b317) Text, 185.50 KB

Tff7b72<Te6edf3templateTff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3peer Te6edf3selected Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffselectedPeerTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex flex-col h-full bg-white dark:bg-zinc-950 overflow-hidden transition-all relativeTa5d6ff"
Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3banished Te6edf3overlay Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffGlobalState.config.banished_effect_enabled && isSelectedPeerBlockedTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffbanished-overlayTa5d6ff"
Tff7b72:Te6edf3styleTff7b72=Ta5d6ff"Ta5d6ff{ background: GlobalState.config.banished_color + '33' }Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3span
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffbanished-text !opacity-100 !text-white !shadow-lg !bg-red-600 !px-4 !py-2 !rounded-xl !border-2 !tracking-widestTa5d6ff"
Tff7b72:Te6edf3styleTff7b72=Ta5d6ff"Ta5d6ff{
'Te6edf3backgroundTff7b72-Te6edf3color'Tff7b72: Te6edf3GlobalStateTb4b4b4.Te6edf3configTb4b4b4.Te6edf3banished_colorTb4b4b4,
'Te6edf3borderTff7b72-Te6edf3color'Tff7b72: Te6edf3GlobalStateTb4b4b4.Te6edf3configTb4b4b4.Te6edf3banished_colorTb4b4b4,
Tb4b4b4}Ta5d6ff"
Tff7b72>Tb4b4b4{Tb4b4b4{ Te6edf3GlobalStateTb4b4b4.Te6edf3configTb4b4b4.Te6edf3banished_text Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3span
Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3header Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffrelative z-20 flex items-center px-4 py-3 border-b border-gray-200/60 dark:border-zinc-800/60 bg-white/80 dark:bg-zinc-900/50 backdrop-blur-smTa5d6ff"
Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3peer Te6edf3icon Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex-shrink-0 mr-3Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3LxmfUserIcon
Tff7b72:Te6edf3customTff7b72-Te6edf3imageTff7b72=Ta5d6ff"Ta5d6ffselectedPeer.contact_imageTa5d6ff"
Tff7b72:Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffselectedPeer.lxmf_user_icon ? selectedPeer.lxmf_user_icon.icon_name : ''Ta5d6ff"
Tff7b72:Te6edf3iconTff7b72-Te6edf3foregroundTff7b72-Te6edf3colourTff7b72=Ta5d6ff"
Te6edf3selectedPeerTb4b4b4.Te6edf3lxmf_user_icon Tff7b72? Te6edf3selectedPeerTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3foreground_colour Tff7b72: ''
Ta5d6ff"
Tff7b72:Te6edf3iconTff7b72-Te6edf3backgroundTff7b72-Te6edf3colourTff7b72=Ta5d6ff"
Te6edf3selectedPeerTb4b4b4.Te6edf3lxmf_user_icon Tff7b72? Te6edf3selectedPeerTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3background_colour Tff7b72: ''
Ta5d6ff"
Te6edf3iconTff7b72-Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffshrink-0Ta5d6ff"
Tff7b72:Te6edf3iconTff7b72-Te6edf3styleTff7b72=Ta5d6ff"Ta5d6ffmessageIconStyleTa5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3peer Te6edf3info Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmin-w-0 flex-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center cursor-pointer min-w-0 groupTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffupdateCustomDisplayNameTa5d6ff"Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffselectedPeer.custom_display_name != nullTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmr-1.5 text-gray-500 dark:text-zinc-400 group-hover:text-gray-700 dark:group-hover:text-zinc-200 transition-colorsTa5d6ff"
Tff7b72:Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ff$t('messages.custom_display_name')Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6fftag-outlineTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-4Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fffont-semibold text-gray-900 dark:text-zinc-100 truncate max-w-[120px] sm:max-w-sm text-baseTa5d6ff"
Tff7b72:Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffselectedPeer.custom_display_name ?? selectedPeer.display_nameTa5d6ff"
Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3selectedPeerTb4b4b4.Te6edf3custom_display_name Tff7b72?Tff7b72? Te6edf3selectedPeerTb4b4b4.Te6edf3display_name Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-xs text-gray-500 dark:text-zinc-400 mt-0.5 flex items-center gap-2 min-w-0Ta5d6ff"Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3destination Te6edf3hash Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffcursor-pointer hover:text-blue-500 transition-colors truncate max-w-[120px] sm:max-w-none shrink-0Ta5d6ff"
Tff7b72:Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffselectedPeer.destination_hashTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffcopyHash(selectedPeer.destination_hash)Ta5d6ff"
Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3formatDestinationHashTb4b4b4(Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4) Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"
Te6edf3selectedPeerPath Tff7b72|Tff7b72|
Te6edf3selectedPeerSignalMetricsTff7b72?Tb4b4b4.Te6edf3snr Tff7b72!Tff7b72= Te6edf3null Tff7b72|Tff7b72|
Te6edf3selectedPeerLxmfStampInfoTff7b72?Tb4b4b4.Te6edf3stamp_cost
Ta5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 min-w-0Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-gray-300 dark:text-zinc-700 shrink-0Ta5d6ff"Tff7b72>•Tff7b72<Tff7b72/Te6edf3spanTff7b72>

Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 truncateTa5d6ff"Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3hops Te6edf3away Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3span
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffselectedPeerPathTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center cursor-pointer hover:text-gray-700 dark:hover:text-zinc-200 shrink-0Ta5d6ff"
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffPath informationTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffonDestinationPathClick(selectedPeerPath)Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3span Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffselectedPeerPath.hops === 0 || selectedPeerPath.hops === 1Ta5d6ff"Tff7b72>Tb4b4b4{Tb4b4b4{
Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.directTa5d6ff"Tb4b4b4)
Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Te6edf3span Te6edf3vTff7b72-Tff7b72elseTff7b72>Tb4b4b4{Tb4b4b4{ Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.hops_awayTa5d6ff"Tb4b4b4, Tb4b4b4{ Te6edf3countTff7b72: Te6edf3selectedPeerPathTb4b4b4.Te6edf3hops Tb4b4b4}Tb4b4b4) Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3spanTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3snr Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3span
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffselectedPeerSignalMetrics?.snr != nullTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 shrink-0Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-gray-300 dark:text-zinc-700 opacity-50Ta5d6ff"Tff7b72>•Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Te6edf3span
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffcursor-pointer hover:text-gray-700 dark:hover:text-zinc-200Ta5d6ff"
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffSignal qualityTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffonSignalMetricsClick(selectedPeerSignalMetrics)Ta5d6ff"
Tff7b72>Tb4b4b4{Tb4b4b4{ Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.snrTa5d6ff"Tb4b4b4, Tb4b4b4{ Te6edf3snrTff7b72: Te6edf3selectedPeerSignalMetricsTb4b4b4.Te6edf3snr Tb4b4b4}Tb4b4b4) Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3span
Tff7b72>
Tff7b72<Tff7b72/Te6edf3spanTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3stamp Te6edf3cost Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3span Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffselectedPeerLxmfStampInfo?.stamp_costTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 shrink-0Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-gray-300 dark:text-zinc-700 opacity-50Ta5d6ff"Tff7b72>•Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Te6edf3span
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffcursor-pointer hover:text-gray-700 dark:hover:text-zinc-200Ta5d6ff"
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffLXMF stamp requirementTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffonStampInfoClick(selectedPeerLxmfStampInfo)Ta5d6ff"
Tff7b72>Tb4b4b4{Tb4b4b4{
Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.stamp_costTa5d6ff"Tb4b4b4, Tb4b4b4{ Te6edf3costTff7b72: Te6edf3selectedPeerLxmfStampInfoTb4b4b4.Te6edf3stamp_cost Tb4b4b4}Tb4b4b4)
Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3span
Tff7b72>
Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3dropdown Te6edf3menu Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffml-auto flex items-center gap-1.5Ta5d6ff"Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3retry Te6edf3all Te6edf3failed Te6edf3messages Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3IconButton
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffhasFailedOrCancelledMessagesTa5d6ff"
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffRetry all failed/cancelled messagesTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-red-500 hover:bg-red-50 dark:hover:bg-red-900/20Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffretryAllFailedOrCancelledMessagesTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffrefreshTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-7Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3IconButtonTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3telemetry Te6edf3history Te6edf3button Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3IconButton Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffView Telemetry HistoryTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffisTelemetryHistoryModalOpen = trueTa5d6ff"Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffsatellite-variantTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-7Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3IconButtonTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3call Te6edf3button Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3IconButton Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffStart a CallTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffonStartCallTa5d6ff"Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffphoneTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-7Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3IconButtonTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3share Te6edf3contact Te6edf3button Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3IconButton Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffShare ContactTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffopenShareContactModalTa5d6ff"Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffnotebook-outlineTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-7Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3IconButtonTff7b72>

Tff7b72<Te6edf3ConversationDropDownMenu
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffselectedPeerTa5d6ff"
Tff7b72:Te6edf3peerTff7b72=Ta5d6ff"Ta5d6ffselectedPeerTa5d6ff"
Tb4b4b4@Te6edf3conversationTff7b72-Te6edf3deletedTff7b72=Ta5d6ff"Ta5d6ffonConversationDeletedTa5d6ff"
Tb4b4b4@Te6edf3setTff7b72-Te6edf3customTff7b72-Te6edf3displayTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffupdateCustomDisplayNameTa5d6ff"
Tb4b4b4@Te6edf3popoutTff7b72=Ta5d6ff"Ta5d6ffopenConversationPopoutTa5d6ff"
Tff7b72/Tff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3close Te6edf3button Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3IconButton Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffCloseTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffcloseTa5d6ff"Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffcloseTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-7Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3IconButtonTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3Telemetry Te6edf3History Te6edf3Modal Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffisTelemetryHistoryModalOpenTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fffixed inset-0 z-[100] flex items-center justify-center p-4 bg-black/50 backdrop-blur-smTa5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Tffa657selfTff7b72=Ta5d6ff"Ta5d6ffisTelemetryHistoryModalOpen = falseTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-full max-w-lg bg-white dark:bg-zinc-900 rounded-2xl shadow-2xl overflow-hidden flex flex-col max-h-[80vh]Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffpx-6 py-4 border-b border-gray-100 dark:border-zinc-800 flex items-center justify-betweenTa5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffsatellite-variantTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-6 text-blue-500Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3h3 Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-lg font-bold text-gray-900 dark:text-whiteTa5d6ff"Tff7b72>Te6edf3Telemetry Te6edf3HistoryTff7b72<Tff7b72/Te6edf3h3Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-gray-400 hover:text-gray-500 dark:hover:text-zinc-300 transition-colorsTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffisTelemetryHistoryModalOpen = falseTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffcloseTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-6Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex-1 overflow-y-auto p-4 space-y-3Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffselectedPeerTelemetryItems.length === 0Ta5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-center py-8 text-gray-400Ta5d6ff"Tff7b72>
Te6edf3No Te6edf3telemetry Te6edf3history Te6edf3found Tff7b72for Te6edf3this Te6edf3peerTb4b4b4.
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72forTff7b72=Ta5d6ff"Ta5d6ffitem in selectedPeerTelemetryItemsTa5d6ff"
Tff7b72:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ffitem.lxmf_message.hashTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffp-3 rounded-xl border border-gray-100 dark:border-zinc-800 bg-gray-50/50 dark:bg-zinc-900/30Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex justify-between items-start mb-2Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3span
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold uppercase tracking-wider px-2 py-0.5 rounded bg-gray-200 dark:bg-zinc-800 text-gray-600 dark:text-zinc-400Ta5d6ff"
Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3itemTb4b4b4.Te6edf3is_outbound Tff7b72? Ta5d6ff"Ta5d6ffSentTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffReceivedTa5d6ff" Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] text-gray-400Ta5d6ff"Tff7b72>Tb4b4b4{Tb4b4b4{
Te6edf3formatTimeAgoTb4b4b4(Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3created_atTb4b4b4)
Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3location Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffitem.lxmf_message.fields?.telemetry?.locationTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 mb-2Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 text-xs font-mono text-blue-600 dark:text-blue-400 hover:underlineTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffviewLocationOnMap(item.lxmf_message.fields.telemetry.location)Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffmap-markerTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-4Ta5d6ff" Tff7b72/Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3latitudeTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff6Tb4b4b4) Tb4b4b4}Tb4b4b4}Tb4b4b4,
Tb4b4b4{Tb4b4b4{ Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3longitudeTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff6Tb4b4b4) Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3sensors Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffitem.lxmf_message.fields?.telemetryTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex flex-wrap gap-3 text-[10px] text-gray-500Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3span Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffitem.lxmf_message.fields.telemetry.batteryTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffbatteryTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-3Ta5d6ff" Tff7b72/Tff7b72>
Te6edf3BatteryTb4b4b4: Tb4b4b4{Tb4b4b4{ Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3batteryTb4b4b4.Te6edf3charge_percent Tb4b4b4}Tb4b4b4}Tff7b72%
Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Te6edf3span
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffitem.lxmf_message.fields.telemetry.physical_linkTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-1Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffantennaTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-3Ta5d6ff" Tff7b72/Tff7b72>
Te6edf3SNRTb4b4b4: Tb4b4b4{Tb4b4b4{ Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3physical_linkTb4b4b4.Te6edf3snr Tb4b4b4}Tb4b4b4}Te6edf3dB
Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3commands Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffitem.lxmf_message.fields?.commands?.some((c) => c['0x01'])Ta5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 text-[10px] text-emerald-600 dark:text-emerald-400 mt-1Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffcrosshairs-questionTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-3Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3spanTff7b72>Te6edf3Location Te6edf3RequestTff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffpx-6 py-4 border-t border-gray-100 dark:border-zinc-800 bg-gray-50/30 dark:bg-zinc-900/20 flex flex-col gap-4Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6fftelemetryBatteryHistory.length > 1Ta5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffspace-y-2Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center justify-betweenTa5d6ff"Tff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold text-gray-400 uppercase tracking-widestTa5d6ff"
Tff7b72>Te6edf3Battery Te6edf3Level Tb4b4b4(Tff7b72%Tb4b4b4)Tff7b72<Tff7b72/Te6edf3span
Tff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] text-gray-500Ta5d6ff"
Tff7b72>Tb4b4b4{Tb4b4b4{ Te6edf3telemetryBatteryHistoryTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3y Tb4b4b4}Tb4b4b4}Tff7b72% →
Tb4b4b4{Tb4b4b4{ Te6edf3telemetryBatteryHistoryTb4b4b4[Te6edf3telemetryBatteryHistoryTb4b4b4.Te6edf3length Tff7b72- T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3y Tb4b4b4}Tb4b4b4}Tff7b72%Tff7b72<Tff7b72/Te6edf3span
Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3svg Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-full h-12 overflow-visibleTa5d6ff" Te6edf3viewBoxTff7b72=Ta5d6ff"Ta5d6ff0 0 100 100Ta5d6ff" Te6edf3preserveAspectRatioTff7b72=Ta5d6ff"Ta5d6ffnoneTa5d6ff"Tff7b72>
Tff7b72<Te6edf3path
Tff7b72:Te6edf3dTff7b72=Ta5d6ff"Ta5d6ffbatterySparklinePathTa5d6ff"
Te6edf3fillTff7b72=Ta5d6ff"Ta5d6ffnoneTa5d6ff"
Te6edf3strokeTff7b72=Ta5d6ff"Ta5d6ff#3b82f6Ta5d6ff"
Te6edf3strokeTff7b72-Te6edf3widthTff7b72=Ta5d6ff"Ta5d6ff2Ta5d6ff"
Te6edf3strokeTff7b72-Te6edf3linecapTff7b72=Ta5d6ff"Ta5d6ffroundTa5d6ff"
Te6edf3strokeTff7b72-Te6edf3linejoinTff7b72=Ta5d6ff"Ta5d6ffroundTa5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Te6edf3circle
Tff7b72:Te6edf3cxTff7b72=Ta5d6ff"Ta5d6ff100Ta5d6ff"
Tff7b72:Te6edf3cyTff7b72=Ta5d6ff"Ta5d6ff100 - telemetryBatteryHistory[telemetryBatteryHistory.length - 1].yTa5d6ff"
Te6edf3rTff7b72=Ta5d6ff"Ta5d6ff3Ta5d6ff"
Te6edf3fillTff7b72=Ta5d6ff"Ta5d6ff#3b82f6Ta5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3svgTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex justify-between items-center w-fullTa5d6ff"Tff7b72>
Tff7b72<Te6edf3label Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 cursor-pointer groupTa5d6ff"Tff7b72>
Tff7b72<Te6edf3input
Te6edf3vTff7b72-Te6edf3modelTff7b72=Ta5d6ff"Ta5d6ffshowTelemetryInChatTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffcheckboxTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffrounded border-gray-300 text-blue-600 focus:ring-blue-500Ta5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Te6edf3span
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-xs font-medium text-gray-600 dark:text-zinc-400 group-hover:text-gray-900 dark:group-hover:text-zinc-200Ta5d6ff"
Tff7b72>Te6edf3Show Te6edf3telemetry Tff7b72in Te6edf3main Te6edf3chatTff7b72<Tff7b72/Te6edf3span
Tff7b72>
Tff7b72<Tff7b72/Te6edf3labelTff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffpx-4 py-2 bg-blue-600 text-white text-xs font-bold rounded-lg hover:bg-blue-700 transition-colors shadow-smTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffisTelemetryHistoryModalOpen = falseTa5d6ff"
Tff7b72>
Te6edf3Done
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3Share Te6edf3Contact Te6edf3Modal Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffisShareContactModalOpenTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fffixed inset-0 z-[100] flex items-center justify-center p-4 bg-black/50 backdrop-blur-smTa5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Tffa657selfTff7b72=Ta5d6ff"Ta5d6ffisShareContactModalOpen = falseTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-full max-w-md bg-white dark:bg-zinc-900 rounded-2xl shadow-2xl overflow-hiddenTa5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffpx-6 py-4 border-b border-gray-100 dark:border-zinc-800 flex items-center justify-betweenTa5d6ff"Tff7b72>
Tff7b72<Te6edf3h3 Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-lg font-bold text-gray-900 dark:text-whiteTa5d6ff"Tff7b72>Te6edf3Share Te6edf3ContactTff7b72<Tff7b72/Te6edf3h3Tff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-gray-400 hover:text-gray-500 dark:hover:text-zinc-300 transition-colorsTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffisShareContactModalOpen = falseTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffcloseTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-6Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffp-6Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmb-4Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffrelativeTa5d6ff"Tff7b72>
Tff7b72<Te6edf3input
Te6edf3vTff7b72-Te6edf3modelTff7b72=Ta5d6ff"Ta5d6ffcontactsSearchTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6fftextTa5d6ff"
Te6edf3placeholderTff7b72=Ta5d6ff"Ta5d6ffSearch contacts...Ta5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffblock w-full rounded-lg border-0 py-2 pl-10 text-gray-900 dark:text-white shadow-sm ring-1 ring-inset ring-gray-300 dark:ring-zinc-800 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-blue-600 sm:text-sm dark:bg-zinc-900Ta5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffpointer-events-none absolute inset-y-0 left-0 flex items-center pl-3Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffmagnifyTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-5 text-gray-400Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmax-h-64 overflow-y-auto space-y-2Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3button
Te6edf3vTff7b72-Tff7b72forTff7b72=Ta5d6ff"Ta5d6ffcontact in filteredContactsTa5d6ff"
Tff7b72:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ffcontact.idTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-full flex items-center gap-3 p-3 rounded-xl hover:bg-gray-50 dark:hover:bg-zinc-800 transition-colors text-leftTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffshareContact(contact)Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-10 rounded-full bg-blue-50 dark:bg-blue-900/20 text-blue-500 flex items-center justify-center shrink-0Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffaccountTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-6Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmin-w-0Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fffont-bold text-gray-900 dark:text-white truncateTa5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3contactTb4b4b4.Te6edf3name Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] text-gray-500 dark:text-zinc-500 font-mono truncateTa5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3contactTb4b4b4.Te6edf3remote_identity_hash Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffcontact.lxmf_addressTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[9px] text-gray-400 dark:text-zinc-500 font-mono truncateTa5d6ff"
Tff7b72>
Te6edf3LXMFTb4b4b4: Tb4b4b4{Tb4b4b4{ Te6edf3contactTb4b4b4.Te6edf3lxmf_address Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffcontact.lxst_addressTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[9px] text-gray-400 dark:text-zinc-500 font-mono truncateTa5d6ff"
Tff7b72>
Te6edf3LXSTTb4b4b4: Tb4b4b4{Tb4b4b4{ Te6edf3contactTb4b4b4.Te6edf3lxst_address Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3chat Te6edf3items Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Tffa657idTff7b72=Ta5d6ff"Ta5d6ffmessagesTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffh-full overflow-y-scroll bg-gray-50/30 dark:bg-zinc-950/50Ta5d6ff"
Tb4b4b4@Te6edf3scrollTff7b72=Ta5d6ff"Ta5d6ffonMessagesScrollTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffselectedPeerChatItems.length > 0Ta5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex flex-col flex-col-reverse px-4 py-6 min-w-0Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72forTff7b72=Ta5d6ff"Ta5d6ffchatItem of selectedPeerChatItemsReversedTa5d6ff"
Tff7b72:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ffchatItem.lxmf_message.hashTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex flex-col max-w-[85%] sm:max-w-[75%] lg:max-w-[65%] mb-4 group min-w-0Ta5d6ff"
Tff7b72:Tff7b72classTff7b72=Ta5d6ff"Ta5d6ff{ 'ml-auto items-end': chatItem.is_outbound, 'mr-auto items-start': !chatItem.is_outbound }Ta5d6ff"
Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3message Te6edf3content Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffrelative rounded-2xl overflow-hidden transition-all duration-200 hover:shadow-md min-w-0Ta5d6ff"
Tff7b72:Tff7b72classTff7b72=Ta5d6ff"Ta5d6ff[
Tb4b4b4['Te6edf3cancelled'Tb4b4b4, 'Te6edf3failed'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3stateTb4b4b4)
Tff7b72? 'Te6edf3bgTff7b72-Te6edf3redT79c0ff-500 Te6edf3textTff7b72-Te6edf3white Te6edf3shadowTff7b72-Te6edf3sm'
Tff7b72: Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3is_spam
Tff7b72? 'Te6edf3bgTff7b72-Te6edf3yellowT79c0ff-100 Te6edf3darkTff7b72:Te6edf3bgTff7b72-Te6edf3yellowT79c0ff-900Tff7b72/T79c0ff30 Te6edf3textTff7b72-Te6edf3yellowT79c0ff-900 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3yellowT79c0ff-100 Te6edf3border Te6edf3borderTff7b72-Te6edf3yellowT79c0ff-300 Te6edf3darkTff7b72:Te6edf3borderTff7b72-Te6edf3yellowT79c0ff-700 Te6edf3shadowTff7b72-Te6edf3sm'
Tff7b72: Te6edf3chatItemTb4b4b4.Te6edf3is_outbound
Tff7b72? 'Te6edf3bgTff7b72-Te6edf3blueT79c0ff-600 Te6edf3textTff7b72-Te6edf3white Te6edf3shadowTff7b72-Te6edf3sm'
Tff7b72: 'Te6edf3bgTff7b72-Te6edf3white Te6edf3darkTff7b72:Te6edf3bgTff7b72-Te6edf3zincT79c0ff-900 Te6edf3textTff7b72-Te6edf3grayT79c0ff-900 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3zincT79c0ff-100 Te6edf3border Te6edf3borderTff7b72-Te6edf3grayT79c0ff-200Tff7b72/T79c0ff60 Te6edf3darkTff7b72:Te6edf3borderTff7b72-Te6edf3zincT79c0ff-800Tff7b72/T79c0ff60 Te6edf3shadowTff7b72-Te6edf3sm'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffonChatItemClick(chatItem)Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-full space-y-1 px-4 py-2.5 min-w-0Ta5d6ff"Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3spam Te6edf3badge Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffchatItem.lxmf_message.is_spamTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-1.5 text-xs font-medium mb-1Ta5d6ff"
Tff7b72:Tff7b72classTff7b72=Ta5d6ff"
Te6edf3chatItemTb4b4b4.Te6edf3is_outbound Tff7b72? 'Te6edf3textTff7b72-Te6edf3yellowT79c0ff-200' Tff7b72: 'Te6edf3textTff7b72-Te6edf3yellowT79c0ff-700 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3yellowT79c0ff-300'
Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3svg
Te6edf3xmlnsTff7b72=Ta5d6ff"Ta5d6ffhttp://www.w3.org/2000/svgTa5d6ff"
Te6edf3fillTff7b72=Ta5d6ff"Ta5d6ffnoneTa5d6ff"
Te6edf3viewBoxTff7b72=Ta5d6ff"Ta5d6ff0 0 24 24Ta5d6ff"
Te6edf3strokeTff7b72-Te6edf3widthTff7b72=Ta5d6ff"Ta5d6ff2Ta5d6ff"
Te6edf3strokeTff7b72=Ta5d6ff"Ta5d6ffcurrentColorTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-4 h-4Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3path
Te6edf3strokeTff7b72-Te6edf3linecapTff7b72=Ta5d6ff"Ta5d6ffroundTa5d6ff"
Te6edf3strokeTff7b72-Te6edf3linejoinTff7b72=Ta5d6ff"Ta5d6ffroundTa5d6ff"
Te6edf3dTff7b72=Ta5d6ff"Ta5d6ffM12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008zTa5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3svgTff7b72>
Tff7b72<Te6edf3spanTff7b72>Te6edf3Marked Te6edf3as Te6edf3SpamTff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3content Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3eslintTff7b72-Te6edf3disable Te6edf3vueTff7b72/Te6edf3noTff7b72-Te6edf3vTff7b72-Te6edf3html Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffchatItem.lxmf_message.content && !getParsedItems(chatItem)?.isOnlyPaperMessageTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffleading-relaxed break-words [word-break:break-word] min-w-0 markdown-contentTa5d6ff"
Tff7b72:Te6edf3styleTff7b72=Ta5d6ff"Ta5d6ff{
'Te6edf3fontTff7b72-Te6edf3family'Tff7b72: 'Te6edf3inherit'Tb4b4b4,
'Te6edf3fontTff7b72-Te6edf3size'Tff7b72: Tb4b4b4(Te6edf3configTff7b72?Tb4b4b4.Te6edf3message_font_size Tff7b72|Tff7b72| T79c0ff14Tb4b4b4) Tff7b72+ 'Te6edf3px'Tb4b4b4,
Tb4b4b4}Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffhandleMessageClickTa5d6ff"
Te6edf3vTff7b72-Te6edf3htmlTff7b72=Ta5d6ff"Ta5d6ffrenderMarkdown(chatItem.lxmf_message.content)Ta5d6ff"
Tff7b72>Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3eslintTff7b72-Te6edf3enable Te6edf3vueTff7b72/Te6edf3noTff7b72-Te6edf3vTff7b72-Te6edf3html Tff7b72-Tff7b72-Tff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3telemetry Te6edf3placeholder Tff7b72for Te6edf3empty Te6edf3content Te6edf3messages Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ff!chatItem.lxmf_message.content && chatItem.lxmf_message.fields?.telemetryTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 mb-2 pb-2 border-b border-gray-100/20Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffsatellite-variantTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-4 opacity-60Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold uppercase tracking-wider opacity-60Ta5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3chatItemTb4b4b4.Te6edf3is_outbound Tff7b72? Ta5d6ff"Ta5d6ffTelemetry update sentTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffTelemetry update receivedTa5d6ff" Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ff!chatItem.lxmf_message.content && chatItem.lxmf_message.fields?.telemetry_streamTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 mb-2 pb-2 border-b border-gray-100/20Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffdatabase-syncTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-4 opacity-60Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold uppercase tracking-wider opacity-60Ta5d6ff"
Tff7b72>Te6edf3Telemetry Te6edf3stream Te6edf3received Tb4b4b4(Tb4b4b4{Tb4b4b4{
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3telemetry_streamTb4b4b4.Te6edf3length
Tb4b4b4}Tb4b4b4}
Te6edf3entriesTb4b4b4)Tff7b72<Tff7b72/Te6edf3span
Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"
Tff7b72!Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3content Tff7b72&Tff7b72&
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3commandsTff7b72?Tb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tff7b72=Tff7b72> Te6edf3cTb4b4b4['T79c0ff0x01'Tb4b4b4] Tff7b72|Tff7b72| Te6edf3cTb4b4b4[Ta5d6ff'Ta5d6ff1Ta5d6ff'Tb4b4b4] Tff7b72|Tff7b72| Te6edf3cTb4b4b4['T79c0ff0x1'Tb4b4b4]Tb4b4b4)
Ta5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 mb-2 pb-2 border-b border-gray-100/20Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffcrosshairs-questionTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-4 opacity-60Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold uppercase tracking-wider opacity-60Ta5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3chatItemTb4b4b4.Te6edf3is_outbound Tff7b72? Ta5d6ff"Ta5d6ffLocation Request SentTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffLocation Request ReceivedTa5d6ff" Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3parsed Te6edf3items Tb4b4b4(Te6edf3contacts Tff7b72/ Te6edf3paper Te6edf3messagesTb4b4b4) Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffgetParsedItems(chatItem)Ta5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmt-2 space-y-2Ta5d6ff"Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3contact Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffgetParsedItems(chatItem).contact && !chatItem.is_outboundTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex flex-col gap-2 p-3 rounded-xl bg-blue-50 dark:bg-blue-900/20 border border-blue-100 dark:border-blue-800/30Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 text-blue-700 dark:text-blue-300Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffaccount-plus-outlineTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-5Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm font-boldTa5d6ff"Tff7b72>Te6edf3Contact Te6edf3SharedTff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-3Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3LxmfUserIcon
Tff7b72:Te6edf3customTff7b72-Te6edf3imageTff7b72=Ta5d6ff"Ta5d6ffgetParsedItems(chatItem).contact.custom_imageTa5d6ff"
Tff7b72:Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffgetParsedItems(chatItem).contact.lxmf_user_icon?.icon_nameTa5d6ff"
Tff7b72:Te6edf3iconTff7b72-Te6edf3foregroundTff7b72-Te6edf3colourTff7b72=Ta5d6ff"
Te6edf3getParsedItemsTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4.Te6edf3contactTb4b4b4.Te6edf3lxmf_user_iconTff7b72?Tb4b4b4.Te6edf3foreground_colour
Ta5d6ff"
Tff7b72:Te6edf3iconTff7b72-Te6edf3backgroundTff7b72-Te6edf3colourTff7b72=Ta5d6ff"
Te6edf3getParsedItemsTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4.Te6edf3contactTb4b4b4.Te6edf3lxmf_user_iconTff7b72?Tb4b4b4.Te6edf3background_colour
Ta5d6ff"
Te6edf3iconTff7b72-Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-10Ta5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex-1 min-w-0Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm font-bold text-gray-900 dark:text-white truncateTa5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3getParsedItemsTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4.Te6edf3contactTb4b4b4.Te6edf3name Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-mono text-gray-500 dark:text-zinc-400 truncateTa5d6ff"
Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3getParsedItemsTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4.Te6edf3contactTb4b4b4.Te6edf3hash Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffgetParsedItems(chatItem).contact.lxmf_addressTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[9px] font-mono text-gray-400 dark:text-zinc-500 truncateTa5d6ff"
Tff7b72>
Te6edf3LXMFTb4b4b4: Tb4b4b4{Tb4b4b4{ Te6edf3getParsedItemsTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4.Te6edf3contactTb4b4b4.Te6edf3lxmf_address Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffgetParsedItems(chatItem).contact.lxst_addressTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[9px] font-mono text-gray-400 dark:text-zinc-500 truncateTa5d6ff"
Tff7b72>
Te6edf3LXSTTb4b4b4: Tb4b4b4{Tb4b4b4{ Te6edf3getParsedItemsTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4.Te6edf3contactTb4b4b4.Te6edf3lxst_address Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-full py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg text-xs font-bold transition-colors shadow-smTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"
Te6edf3addContactTb4b4b4(
Te6edf3getParsedItemsTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4.Te6edf3contactTb4b4b4.Te6edf3nameTb4b4b4,
Te6edf3getParsedItemsTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4.Te6edf3contactTb4b4b4.Te6edf3hashTb4b4b4,
Te6edf3getParsedItemsTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4.Te6edf3contactTb4b4b4.Te6edf3lxmf_addressTb4b4b4,
Te6edf3getParsedItemsTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4.Te6edf3contactTb4b4b4.Te6edf3lxst_address
Tb4b4b4)
Ta5d6ff"
Tff7b72>
Te6edf3Add Te6edf3to Te6edf3Contacts
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3paper Te6edf3message Tff7b72autoTff7b72-Te6edf3conversion Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffgetParsedItems(chatItem).paperMessage && !chatItem.is_outboundTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex flex-col gap-2 p-3 rounded-xl bg-emerald-50 dark:bg-black/60 border border-emerald-100 dark:border-zinc-700/50Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 text-emerald-700 dark:text-emerald-400Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffqrcode-scanTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-5Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm font-boldTa5d6ff"Tff7b72>Te6edf3Paper Te6edf3Message Te6edf3detectedTff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3p Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-xs text-emerald-600/80 dark:text-zinc-400 leading-relaxedTa5d6ff"Tff7b72>
Te6edf3This Te6edf3message Te6edf3contains Te6edf3a Tffa657signed Te6edf3LXMF Te6edf3URI Te6edf3that Te6edf3can Te6edf3be Te6edf3ingested Te6edf3into Te6edf3your
Te6edf3conversationsTb4b4b4.
Tff7b72<Tff7b72/Te6edf3pTff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-full py-2 bg-emerald-600 hover:bg-emerald-700 text-white rounded-lg text-xs font-bold transition-colors shadow-smTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffingestPaperMessage(getParsedItems(chatItem).paperMessage)Ta5d6ff"
Tff7b72>
Te6edf3Ingest Te6edf3Message
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3image Te6edf3field Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffchatItem.lxmf_message.fields?.imageTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffrelative group mt-1 -mx-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3img
Tff7b72:Te6edf3srcTff7b72=Ta5d6ff"Ta5d6ff`/api/v1/lxmf-messages/attachment/${chatItem.lxmf_message.hash}/image`Ta5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmax-w-[240px] sm:max-w-xs w-full rounded-lg cursor-pointer transition-transform group-hover:scale-[1.01]Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"
Te6edf3openImageTb4b4b4(
`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3lxmfTff7b72-Te6edf3messagesTff7b72/Te6edf3attachmentTff7b72/Te6edf3$Tb4b4b4{Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4}Tff7b72/Te6edf3image`
Tb4b4b4)
Ta5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffabsolute bottom-2 left-2 bg-black/60 backdrop-blur-sm text-white text-xs px-2.5 py-1 rounded-lg flex items-center gap-1.5Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3spanTff7b72>Tb4b4b4{Tb4b4b4{
Tb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3imageTb4b4b4.Te6edf3image_type Tff7b72?Tff7b72? Ta5d6ff"Ta5d6ffimageTa5d6ff"Tb4b4b4)Tb4b4b4.Te6edf3toUpperCaseTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Te6edf3spanTff7b72>•Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Te6edf3spanTff7b72>Tb4b4b4{Tb4b4b4{ Te6edf3formatAttachmentSizeTb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3imageTb4b4b4, Ta5d6ff"Ta5d6ffimageTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3audio Te6edf3field Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffchatItem.lxmf_message.fields?.audioTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffpb-1Ta5d6ff"Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3audio Te6edf3is Te6edf3loaded Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3AudioWaveformPlayer
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6fflxmfMessageAudioAttachmentCache[chatItem.lxmf_message.hash]Ta5d6ff"
Tff7b72:Te6edf3srcTff7b72=Ta5d6ff"Ta5d6fflxmfMessageAudioAttachmentCache[chatItem.lxmf_message.hash]Ta5d6ff"
Tff7b72:Te6edf3isTff7b72-Te6edf3outboundTff7b72=Ta5d6ff"Ta5d6ffchatItem.is_outboundTa5d6ff"
Tff7b72/Tff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3audio Te6edf3is Te6edf3not Te6edf3yet Te6edf3loaded Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3min Te6edf3height Te6edf3to Te6edf3make Te6edf3sure Te6edf3audio Te6edf3player Te6edf3doesn'Te6edf3t Te6edf3cause Te6edf3height Te6edf3increase Te6edf3after Te6edf3loading Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72else
Te6edf3styleTff7b72=Ta5d6ff"Ta5d6ffmin-height: 54pxTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center justify-center p-2 rounded-xl bg-gray-50/50 dark:bg-zinc-800/50 border border-gray-100 dark:border-zinc-800Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-4 border-2 border-blue-500/20 border-t-blue-500 rounded-full animate-spinTa5d6ff"
Tff7b72>Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold text-gray-400 uppercase tracking-widerTa5d6ff"Tff7b72>Tb4b4b4{Tb4b4b4{
Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.downloadingTa5d6ff"Tb4b4b4)
Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] mt-1 text-right opacity-60Ta5d6ff"
Tff7b72:Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffchatItem.is_outbound ? 'text-white' : 'text-gray-500 dark:text-zinc-400'Ta5d6ff"
Tff7b72>
Te6edf3Voice Te6edf3Note • Tb4b4b4{Tb4b4b4{ Te6edf3formatAttachmentSizeTb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3audioTb4b4b4, Ta5d6ff"Ta5d6ffaudioTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3file Te6edf3attachment Te6edf3fields Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffchatItem.lxmf_message.fields?.file_attachmentsTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffspace-y-2 mt-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3a
Te6edf3vTff7b72-Tff7b72forTff7b72=Ta5d6ff"Ta5d6ff(file_attachment, index) of chatItem.lxmf_message.fields?.file_attachments ??
Tb4b4b4[Tb4b4b4]Ta5d6ff"
Tff7b72:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6fffile_attachment.file_nameTa5d6ff"
Te6edf3targetTff7b72=Ta5d6ff"Ta5d6ff_blankTa5d6ff"
Tff7b72:Te6edf3downloadTff7b72=Ta5d6ff"Ta5d6fffile_attachment.file_nameTa5d6ff"
Tff7b72:Te6edf3hrefTff7b72=Ta5d6ff"Ta5d6ff`/api/v1/lxmf-messages/attachment/${chatItem.lxmf_message.hash}/file?file_index=${index}`Ta5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-3 border rounded-lg px-3 py-2 text-sm font-medium cursor-pointer transition-colorsTa5d6ff"
Tff7b72:Tff7b72classTff7b72=Ta5d6ff"
Te6edf3chatItemTb4b4b4.Te6edf3is_outbound
Tff7b72? 'Te6edf3bgTff7b72-Te6edf3whiteTff7b72/T79c0ff20 Te6edf3textTff7b72-Te6edf3white Te6edf3borderTff7b72-Te6edf3whiteTff7b72/T79c0ff20 Te6edf3hoverTff7b72:Te6edf3bgTff7b72-Te6edf3whiteTff7b72/T79c0ff30'
Tff7b72: 'Te6edf3bgTff7b72-Te6edf3grayT79c0ff-50 Te6edf3darkTff7b72:Te6edf3bgTff7b72-Te6edf3zincT79c0ff-800Tff7b72/T79c0ff50 Te6edf3textTff7b72-Te6edf3grayT79c0ff-700 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3zincT79c0ff-300 Te6edf3borderTff7b72-Te6edf3grayT79c0ff-200Tff7b72/T79c0ff60 Te6edf3darkTff7b72:Te6edf3borderTff7b72-Te6edf3zincT79c0ff-700 Te6edf3hoverTff7b72:Te6edf3bgTff7b72-Te6edf3grayT79c0ff-100 Te6edf3darkTff7b72:Te6edf3hoverTff7b72:Te6edf3bgTff7b72-Te6edf3zincT79c0ff-800'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stop
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmy-autoTa5d6ff"Tff7b72>
Tff7b72<Te6edf3svg
Te6edf3xmlnsTff7b72=Ta5d6ff"Ta5d6ffhttp://www.w3.org/2000/svgTa5d6ff"
Te6edf3fillTff7b72=Ta5d6ff"Ta5d6ffnoneTa5d6ff"
Te6edf3viewBoxTff7b72=Ta5d6ff"Ta5d6ff0 0 24 24Ta5d6ff"
Te6edf3strokeTff7b72-Te6edf3widthTff7b72=Ta5d6ff"Ta5d6ff1.5Ta5d6ff"
Te6edf3strokeTff7b72=Ta5d6ff"Ta5d6ffcurrentColorTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-6 h-6Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3path
Te6edf3strokeTff7b72-Te6edf3linecapTff7b72=Ta5d6ff"Ta5d6ffroundTa5d6ff"
Te6edf3strokeTff7b72-Te6edf3linejoinTff7b72=Ta5d6ff"Ta5d6ffroundTa5d6ff"
Te6edf3dTff7b72=Ta5d6ff"Ta5d6ffm18.375 12.739-7.693 7.693a4.5 4.5 0 0 1-6.364-6.364l10.94-10.94A3 3 0 1 1 19.5 7.372L8.552 18.32m.009-.01-.01.01m5.699-9.941-7.81 7.81a1.5 1.5 0 0 0 2.112 2.13Ta5d6ff"
Tff7b72>Tff7b72<Tff7b72/Te6edf3pathTff7b72>
Tff7b72<Tff7b72/Te6edf3svgTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex-1 min-w-0Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftruncateTa5d6ff"Tff7b72>Tb4b4b4{Tb4b4b4{ Te6edf3file_attachmentTb4b4b4.Te6edf3file_name Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-xs font-normal mt-0.5Ta5d6ff"
Tff7b72:Tff7b72classTff7b72=Ta5d6ff"
Te6edf3chatItemTb4b4b4.Te6edf3is_outbound
Tff7b72? 'Te6edf3textTff7b72-Te6edf3whiteTff7b72/T79c0ff60'
Tff7b72: 'Te6edf3textTff7b72-Te6edf3grayT79c0ff-500 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3zincT79c0ff-400'
Ta5d6ff"
Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3formatAttachmentSizeTb4b4b4(Te6edf3file_attachmentTb4b4b4, Ta5d6ff"Ta5d6fffileTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmy-autoTa5d6ff"Tff7b72>
Tff7b72<Te6edf3svg
Te6edf3xmlnsTff7b72=Ta5d6ff"Ta5d6ffhttp://www.w3.org/2000/svgTa5d6ff"
Te6edf3fillTff7b72=Ta5d6ff"Ta5d6ffnoneTa5d6ff"
Te6edf3viewBoxTff7b72=Ta5d6ff"Ta5d6ff0 0 24 24Ta5d6ff"
Te6edf3strokeTff7b72-Te6edf3widthTff7b72=Ta5d6ff"Ta5d6ff1.5Ta5d6ff"
Te6edf3strokeTff7b72=Ta5d6ff"Ta5d6ffcurrentColorTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-6 h-6Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3path
Te6edf3strokeTff7b72-Te6edf3linecapTff7b72=Ta5d6ff"Ta5d6ffroundTa5d6ff"
Te6edf3strokeTff7b72-Te6edf3linejoinTff7b72=Ta5d6ff"Ta5d6ffroundTa5d6ff"
Te6edf3dTff7b72=Ta5d6ff"Ta5d6ffM3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3Ta5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3svgTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3aTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3commands Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffchatItem.lxmf_message.fields?.commandsTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffspace-y-2 mt-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72forTff7b72=Ta5d6ff"Ta5d6ff(command, index) in chatItem.lxmf_message.fields.commandsTa5d6ff" Tff7b72:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ffindexTa5d6ff"Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffcommand['0x01'] || command['1'] || command['0x1']Ta5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 border border-gray-200/60 dark:border-zinc-700 hover:bg-gray-50 dark:hover:bg-zinc-800 rounded-lg px-3 py-2 text-sm font-medium transition-colorsTa5d6ff"
Tff7b72:Tff7b72classTff7b72=Ta5d6ff"
Te6edf3chatItemTb4b4b4.Te6edf3is_outbound
Tff7b72? 'Te6edf3bgTff7b72-Te6edf3whiteTff7b72/T79c0ff20 Te6edf3textTff7b72-Te6edf3white Te6edf3borderTff7b72-Te6edf3whiteTff7b72/T79c0ff20 Te6edf3hoverTff7b72:Te6edf3bgTff7b72-Te6edf3whiteTff7b72/T79c0ff30'
Tff7b72: 'Te6edf3bgTff7b72-Te6edf3grayT79c0ff-50 Te6edf3darkTff7b72:Te6edf3bgTff7b72-Te6edf3zincT79c0ff-800Tff7b72/T79c0ff50 Te6edf3textTff7b72-Te6edf3grayT79c0ff-700 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3zincT79c0ff-300'
Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffcrosshairs-questionTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-5Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-leftTa5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fffont-bold text-xs uppercase tracking-wider opacity-80Ta5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.location_requestedTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ff!chatItem.is_outboundTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] opacity-70Ta5d6ff"Tff7b72>
Te6edf3Peer Te6edf3is Te6edf3requesting Te6edf3your Te6edf3location
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3telemetry Tff7b72/ Te6edf3location Te6edf3field Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffchatItem.lxmf_message.fields?.telemetryTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffpb-1 mt-1 space-y-2Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex flex-wrap gap-2Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3button
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffchatItem.lxmf_message.fields.telemetry.locationTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 border border-gray-200/60 dark:border-zinc-700 hover:bg-gray-50 dark:hover:bg-zinc-800 rounded-lg px-3 py-2 text-sm font-medium transition-colorsTa5d6ff"
Tff7b72:Tff7b72classTff7b72=Ta5d6ff"
Te6edf3chatItemTb4b4b4.Te6edf3is_outbound
Tff7b72? 'Te6edf3bgTff7b72-Te6edf3whiteTff7b72/T79c0ff20 Te6edf3textTff7b72-Te6edf3white Te6edf3borderTff7b72-Te6edf3whiteTff7b72/T79c0ff20 Te6edf3hoverTff7b72:Te6edf3bgTff7b72-Te6edf3whiteTff7b72/T79c0ff30'
Tff7b72: 'Te6edf3bgTff7b72-Te6edf3grayT79c0ff-50 Te6edf3darkTff7b72:Te6edf3bgTff7b72-Te6edf3zincT79c0ff-800Tff7b72/T79c0ff50 Te6edf3textTff7b72-Te6edf3grayT79c0ff-700 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3zincT79c0ff-300'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffviewLocationOnMap(chatItem.lxmf_message.fields.telemetry.location)Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffmap-markerTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-5Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-leftTa5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fffont-bold text-[10px] uppercase tracking-wider opacity-80Ta5d6ff"Tff7b72>
Te6edf3Location
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[9px] font-mono opacity-70Ta5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3latitudeTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff6Tb4b4b4)
Tb4b4b4}Tb4b4b4}Tb4b4b4,
Tb4b4b4{Tb4b4b4{
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3longitudeTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff6Tb4b4b4)
Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3Live Te6edf3Track Te6edf3Toggle Te6edf3Button Tb4b4b4(Te6edf3only Tff7b72for Te6edf3incomingTb4b4b4) Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3button
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ff!chatItem.is_outboundTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 border border-gray-200/60 dark:border-zinc-700 hover:bg-gray-50 dark:hover:bg-zinc-800 rounded-lg px-3 py-2 text-sm font-medium transition-colorsTa5d6ff"
Tff7b72:Tff7b72classTff7b72=Ta5d6ff"Ta5d6ff[
Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3is_tracking
Tff7b72? 'Te6edf3bgTff7b72-Te6edf3blueT79c0ff-500Tff7b72/T79c0ff20 Te6edf3textTff7b72-Te6edf3blueT79c0ff-600 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3blueT79c0ff-400 Te6edf3borderTff7b72-Te6edf3blueT79c0ff-500Tff7b72/T79c0ff30 Te6edf3shadowTff7b72-Te6edf3inner'
Tff7b72: 'Te6edf3bgTff7b72-Te6edf3grayT79c0ff-50 Te6edf3darkTff7b72:Te6edf3bgTff7b72-Te6edf3zincT79c0ff-800Tff7b72/T79c0ff50 Te6edf3textTff7b72-Te6edf3grayT79c0ff-700 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3zincT79c0ff-300'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6fftoggleTracking()Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon
Tff7b72:Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffselectedPeer?.is_tracking ? 'radar' : 'crosshairs'Ta5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-5Ta5d6ff"
Tff7b72:Tff7b72classTff7b72=Ta5d6ff"Ta5d6ff{ 'animate-pulse text-blue-500': selectedPeer?.is_tracking }Ta5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-leftTa5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fffont-bold text-[10px] uppercase tracking-wider opacity-80Ta5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3is_tracking Tff7b72? Ta5d6ff"Ta5d6ffTracking ActiveTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffLive TrackTa5d6ff" Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[9px] opacity-70Ta5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{
Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3is_tracking
Tff7b72? Ta5d6ff"Ta5d6ffAuto-requesting locationTa5d6ff"
Tff7b72: Ta5d6ff"Ta5d6ffEnable live trackingTa5d6ff"
Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3other Te6edf3sensor Te6edf3data Tff7b72if Te6edf3available Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3battery Tff7b72|Tff7b72|
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3physical_link
Ta5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex gap-3 px-1Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffchatItem.lxmf_message.fields.telemetry.batteryTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-1 opacity-60 text-[10px]Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffbatteryTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-3Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3span
Tff7b72>Tb4b4b4{Tb4b4b4{ Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3batteryTb4b4b4.Te6edf3charge_percent Tb4b4b4}Tb4b4b4}Tff7b72%Tff7b72<Tff7b72/Te6edf3span
Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffchatItem.lxmf_message.fields.telemetry.physical_linkTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-1 opacity-60 text-[10px]Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffantennaTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-3Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3span
Tff7b72>Te6edf3SNRTff7b72: Tb4b4b4{Tb4b4b4{ Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3physical_linkTb4b4b4.Te6edf3snr Tb4b4b4}Tb4b4b4}Te6edf3dBTff7b72<Tff7b72/Te6edf3span
Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3actions Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffchatItem.is_actions_expandedTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffborder-t px-4 py-2.5Ta5d6ff"
Tff7b72:Tff7b72classTff7b72=Ta5d6ff"
Te6edf3chatItemTb4b4b4.Te6edf3is_outbound
Tff7b72? 'Te6edf3borderTff7b72-Te6edf3whiteTff7b72/T79c0ff20 Te6edf3bgTff7b72-Te6edf3whiteTff7b72/T79c0ff10'
Tff7b72: 'Te6edf3borderTff7b72-Te6edf3grayT79c0ff-200Tff7b72/T79c0ff60 Te6edf3darkTff7b72:Te6edf3borderTff7b72-Te6edf3zincT79c0ff-800Tff7b72/T79c0ff60 Te6edf3bgTff7b72-Te6edf3grayT79c0ff-50Tff7b72/T79c0ff50 Te6edf3darkTff7b72:Te6edf3bgTff7b72-Te6edf3zincT79c0ff-900Tff7b72/T79c0ff50'
Ta5d6ff"
Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3delete Te6edf3message Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffinline-flex items-center gap-x-1.5 rounded-lg bg-red-500 px-3 py-1.5 text-xs font-semibold text-white shadow-sm hover:bg-red-600 transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Ta5d6ffdeleteChatItem(chatItem)Ta5d6ff"
Tff7b72>
Te6edf3Delete
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffinline-flex items-center gap-x-1.5 rounded-lg bg-gray-600 px-3 py-1.5 text-xs font-semibold text-white shadow-sm hover:bg-gray-700 transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-600Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Ta5d6ffshowRawMessage(chatItem)Ta5d6ff"
Tff7b72>
Te6edf3Raw Te6edf3LXM
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3message Te6edf3state Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffchatItem.is_outboundTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex text-right mt-1.5 px-1Ta5d6ff"
Tff7b72:Tff7b72classTff7b72=Ta5d6ff"Ta5d6ff[
Tb4b4b4['Te6edf3cancelled'Tb4b4b4, 'Te6edf3failed'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3stateTb4b4b4)
Tff7b72? 'Te6edf3textTff7b72-Te6edf3redT79c0ff-500 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3redT79c0ff-400'
Tff7b72: 'Te6edf3textTff7b72-Te6edf3grayT79c0ff-400 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3zincT79c0ff-500'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex ml-auto items-center space-x-1.5 text-xsTa5d6ff"Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3state Te6edf3label Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmy-autoTa5d6ff"Tff7b72>
Tff7b72<Te6edf3span
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffspace-x-1 cursor-pointer hover:underlineTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6fftoggleSentMessageInfo(chatItem.lxmf_message.hash)Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3spanTff7b72>Tb4b4b4{Tb4b4b4{ Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3state Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Te6edf3span
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3state Tff7b72=Tff7b72=Tff7b72= 'Te6edf3outbound' Tff7b72&Tff7b72&
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3delivery_attempts Tff7b72>Tff7b72= T79c0ff1
Ta5d6ff"
Tff7b72>Tb4b4b4(Te6edf3attempt Tb4b4b4{Tb4b4b4{ Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3delivery_attempts Tff7b72+ T79c0ff1 Tb4b4b4}Tb4b4b4}Tb4b4b4)Tff7b72<Tff7b72/Te6edf3span
Tff7b72>
Tff7b72<Te6edf3span
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3state Tff7b72=Tff7b72=Tff7b72= 'Te6edf3sent' Tff7b72&Tff7b72&
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3method Tff7b72=Tff7b72=Tff7b72= 'Te6edf3opportunistic' Tff7b72&Tff7b72&
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3delivery_attempts Tff7b72>Tff7b72= T79c0ff1
Ta5d6ff"
Tff7b72>Tb4b4b4(Te6edf3attempt Tb4b4b4{Tb4b4b4{ Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3delivery_attempts Tb4b4b4}Tb4b4b4}Tb4b4b4)Tff7b72<Tff7b72/Te6edf3span
Tff7b72>
Tff7b72<Te6edf3span
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3state Tff7b72=Tff7b72=Tff7b72= 'Te6edf3sent' Tff7b72&Tff7b72&
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3method Tff7b72=Tff7b72=Tff7b72= 'Te6edf3propagated'
Ta5d6ff"
Tff7b72>Te6edf3to Te6edf3propagation Te6edf3nodeTff7b72<Tff7b72/Te6edf3span
Tff7b72>
Tff7b72<Te6edf3span Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffchatItem.lxmf_message.state === 'sending'Ta5d6ff"
Tff7b72>Tb4b4b4{Tb4b4b4{ Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3progressTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff0Tb4b4b4) Tb4b4b4}Tb4b4b4}Tff7b72%Tff7b72<Tff7b72/Te6edf3span
Tff7b72>
Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Te6edf3a
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3state Tff7b72=Tff7b72=Tff7b72= 'Te6edf3outbound' Tff7b72|Tff7b72|
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3state Tff7b72=Tff7b72=Tff7b72= 'Te6edf3sending' Tff7b72|Tff7b72|
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3state Tff7b72=Tff7b72=Tff7b72= 'Te6edf3sent'
Ta5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffml-1 cursor-pointer underline text-blue-500Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffcancelSendingMessage(chatItem)Ta5d6ff"
Tff7b72>Te6edf3cancelTff7b72?Tff7b72<Tff7b72/Te6edf3a
Tff7b72>
Tff7b72<Te6edf3a
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3state Tff7b72=Tff7b72=Tff7b72= 'Te6edf3failed' Tff7b72|Tff7b72|
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3state Tff7b72=Tff7b72=Tff7b72= 'Te6edf3cancelled'
Ta5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffml-1 cursor-pointer underline text-blue-500Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffretrySendingMessage(chatItem)Ta5d6ff"
Tff7b72>Te6edf3retryTff7b72?Tff7b72<Tff7b72/Te6edf3a
Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3delivered Te6edf3icon Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffchatItem.lxmf_message.state === 'delivered'Ta5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmy-autoTa5d6ff"Tff7b72>
Tff7b72<Te6edf3svg
Te6edf3xmlnsTff7b72=Ta5d6ff"Ta5d6ffhttp://www.w3.org/2000/svgTa5d6ff"
Te6edf3viewBoxTff7b72=Ta5d6ff"Ta5d6ff0 0 24 24Ta5d6ff"
Te6edf3fillTff7b72=Ta5d6ff"Ta5d6ffcurrentColorTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-5 h-5Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3path
Te6edf3fillTff7b72-Te6edf3ruleTff7b72=Ta5d6ff"Ta5d6ffevenoddTa5d6ff"
Te6edf3dTff7b72=Ta5d6ff"Ta5d6ffM2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25ZTa5d6ff"
Te6edf3clipTff7b72-Te6edf3ruleTff7b72=Ta5d6ff"Ta5d6ffevenoddTa5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3svgTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3cancelled Te6edf3icon Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72elseTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffchatItem.lxmf_message.state === 'cancelled'Ta5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmy-autoTa5d6ff"Tff7b72>
Tff7b72<Te6edf3svg
Te6edf3xmlnsTff7b72=Ta5d6ff"Ta5d6ffhttp://www.w3.org/2000/svgTa5d6ff"
Te6edf3viewBoxTff7b72=Ta5d6ff"Ta5d6ff0 0 24 24Ta5d6ff"
Te6edf3fillTff7b72=Ta5d6ff"Ta5d6ffcurrentColorTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-5Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3path
Te6edf3fillTff7b72-Te6edf3ruleTff7b72=Ta5d6ff"Ta5d6ffevenoddTa5d6ff"
Te6edf3dTff7b72=Ta5d6ff"Ta5d6ffM12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25Zm-1.72 6.97a.75.75 0 1 0-1.06 1.06L10.94 12l-1.72 1.72a.75.75 0 1 0 1.06 1.06L12 13.06l1.72 1.72a.75.75 0 1 0 1.06-1.06L13.06 12l1.72-1.72a.75.75 0 1 0-1.06-1.06L12 10.94l-1.72-1.72ZTa5d6ff"
Te6edf3clipTff7b72-Te6edf3ruleTff7b72=Ta5d6ff"Ta5d6ffevenoddTa5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3svgTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3failed Te6edf3icon Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72elseTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffchatItem.lxmf_message.state === 'failed'Ta5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmy-autoTa5d6ff"Tff7b72>
Tff7b72<Te6edf3svg
Te6edf3xmlnsTff7b72=Ta5d6ff"Ta5d6ffhttp://www.w3.org/2000/svgTa5d6ff"
Te6edf3viewBoxTff7b72=Ta5d6ff"Ta5d6ff0 0 24 24Ta5d6ff"
Te6edf3fillTff7b72=Ta5d6ff"Ta5d6ffcurrentColorTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-5 h-5Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3path
Te6edf3fillTff7b72-Te6edf3ruleTff7b72=Ta5d6ff"Ta5d6ffevenoddTa5d6ff"
Te6edf3dTff7b72=Ta5d6ff"Ta5d6ffM2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5ZTa5d6ff"
Te6edf3clipTff7b72-Te6edf3ruleTff7b72=Ta5d6ff"Ta5d6ffevenoddTa5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3svgTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3fallback Te6edf3icon Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72else Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmy-autoTa5d6ff"Tff7b72>
Tff7b72<Te6edf3svg
Te6edf3xmlnsTff7b72=Ta5d6ff"Ta5d6ffhttp://www.w3.org/2000/svgTa5d6ff"
Te6edf3fillTff7b72=Ta5d6ff"Ta5d6ffnoneTa5d6ff"
Te6edf3viewBoxTff7b72=Ta5d6ff"Ta5d6ff0 0 24 24Ta5d6ff"
Te6edf3strokeTff7b72-Te6edf3widthTff7b72=Ta5d6ff"Ta5d6ff1.5Ta5d6ff"
Te6edf3strokeTff7b72=Ta5d6ff"Ta5d6ffcurrentColorTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-5 h-5Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3path
Te6edf3strokeTff7b72-Te6edf3linecapTff7b72=Ta5d6ff"Ta5d6ffroundTa5d6ff"
Te6edf3strokeTff7b72-Te6edf3linejoinTff7b72=Ta5d6ff"Ta5d6ffroundTa5d6ff"
Te6edf3dTff7b72=Ta5d6ff"Ta5d6ffM8.625 12a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H8.25m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H12m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0h-.375M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0ZTa5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3svgTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3inbound Te6edf3message Te6edf3info Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ff!chatItem.is_outboundTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-xs text-gray-400 dark:text-zinc-500 mt-1.5 px-1 flex flex-colTa5d6ff"
Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3received Te6edf3timestamp Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3span
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffcursor-pointer hover:underlineTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6fftoggleReceivedMessageInfo(chatItem.lxmf_message.hash)Ta5d6ff"
Tff7b72>Tb4b4b4{Tb4b4b4{ Te6edf3formatTimeAgoTb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3created_atTb4b4b4) Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3span
Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3expanded Te6edf3message Te6edf3details Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffexpandedMessageInfo === chatItem.lxmf_message.hashTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmt-2 px-1 text-xs text-gray-500 dark:text-zinc-400 space-y-0.5Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72forTff7b72=Ta5d6ff"Ta5d6ff(line, index) in getMessageInfoLines(chatItem.lxmf_message, chatItem.is_outbound)Ta5d6ff"
Tff7b72:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ffindexTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffbreak-allTa5d6ff"
Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3line Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3load Te6edf3previous Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3button
Te6edf3vTff7b72-Te6edf3showTff7b72=Ta5d6ff"Ta5d6ff!isLoadingPrevious && hasMorePreviousTa5d6ff"
Tffa657idTff7b72=Ta5d6ff"Ta5d6ffload-previousTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 mx-auto mt-4 bg-white dark:bg-zinc-900 border border-gray-200 dark:border-zinc-800 px-4 py-2 hover:bg-gray-50 dark:hover:bg-zinc-800 rounded-full shadow-sm text-sm font-medium text-gray-700 dark:text-zinc-300 transition-colorsTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffloadPreviousTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3svg
Te6edf3xmlnsTff7b72=Ta5d6ff"Ta5d6ffhttp://www.w3.org/2000/svgTa5d6ff"
Te6edf3fillTff7b72=Ta5d6ff"Ta5d6ffnoneTa5d6ff"
Te6edf3viewBoxTff7b72=Ta5d6ff"Ta5d6ff0 0 24 24Ta5d6ff"
Te6edf3strokeTff7b72-Te6edf3widthTff7b72=Ta5d6ff"Ta5d6ff1.5Ta5d6ff"
Te6edf3strokeTff7b72=Ta5d6ff"Ta5d6ffcurrentColorTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-4 h-4Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3path
Te6edf3strokeTff7b72-Te6edf3linecapTff7b72=Ta5d6ff"Ta5d6ffroundTa5d6ff"
Te6edf3strokeTff7b72-Te6edf3linejoinTff7b72=Ta5d6ff"Ta5d6ffroundTa5d6ff"
Te6edf3dTff7b72=Ta5d6ff"Ta5d6ffm15 11.25-3-3m0 0-3 3m3-3v7.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0ZTa5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3svgTff7b72>
Tff7b72<Te6edf3spanTff7b72>Te6edf3Load Te6edf3PreviousTff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3send Te6edf3message Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-full border-t border-gray-200/60 dark:border-zinc-800/60 bg-white/80 dark:bg-zinc-900/50 backdrop-blur-sm px-3 sm:px-4 py-2.5Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-fullTa5d6ff"Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3banished Te6edf3user Te6edf3notification Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffisSelectedPeerBlockedTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmb-3 p-3 bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg flex items-center gap-2Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3svg
Te6edf3xmlnsTff7b72=Ta5d6ff"Ta5d6ffhttp://www.w3.org/2000/svgTa5d6ff"
Te6edf3fillTff7b72=Ta5d6ff"Ta5d6ffnoneTa5d6ff"
Te6edf3viewBoxTff7b72=Ta5d6ff"Ta5d6ff0 0 24 24Ta5d6ff"
Te6edf3strokeTff7b72-Te6edf3widthTff7b72=Ta5d6ff"Ta5d6ff2Ta5d6ff"
Te6edf3strokeTff7b72=Ta5d6ff"Ta5d6ffcurrentColorTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-5 h-5 text-yellow-600 dark:text-yellow-400 flex-shrink-0Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3path
Te6edf3strokeTff7b72-Te6edf3linecapTff7b72=Ta5d6ff"Ta5d6ffroundTa5d6ff"
Te6edf3strokeTff7b72-Te6edf3linejoinTff7b72=Ta5d6ff"Ta5d6ffroundTa5d6ff"
Te6edf3dTff7b72=Ta5d6ff"Ta5d6ffM12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008zTa5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3svgTff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm text-yellow-800 dark:text-yellow-200Ta5d6ff"
Tff7b72>Te6edf3You Te6edf3have Te6edf3banished Te6edf3this Te6edf3userTb4b4b4. Te6edf3They Te6edf3cannot Te6edf3send Te6edf3you Te6edf3messages Te6edf3or Te6edf3establish Te6edf3linksTb4b4b4.Tff7b72<Tff7b72/Te6edf3span
Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3message Te6edf3composer Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffspace-y-2 mb-2Ta5d6ff"Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3image Te6edf3attachments Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffnewMessageImages.length > 0Ta5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex flex-wrap gap-2Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72forTff7b72=Ta5d6ff"Ta5d6ff(image, index) in newMessageImagesTa5d6ff" Tff7b72:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ffindexTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffrelative groupTa5d6ff"Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-20 h-20 sm:w-24 sm:h-24 overflow-hidden rounded-xl bg-gray-100 dark:bg-zinc-800 cursor-pointer border border-gray-200 dark:border-zinc-800 shadow-smTa5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Ta5d6ffopenImage(newMessageImageUrls[index])Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3img
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffnewMessageImageUrls[index]Ta5d6ff"
Tff7b72:Te6edf3srcTff7b72=Ta5d6ff"Ta5d6ffnewMessageImageUrls[index]Ta5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-full h-full object-coverTa5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffabsolute -top-1 -right-1 inline-flex items-center justify-center w-5 h-5 rounded-full bg-white dark:bg-zinc-900 border border-gray-200 dark:border-zinc-800 text-gray-600 dark:text-gray-200 hover:bg-red-100 hover:text-red-600 dark:hover:bg-red-900/40 shadow-sm transition-all opacity-100 sm:opacity-0 group-hover:opacity-100Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Ta5d6ffremoveImageAttachment(index)Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffcloseTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-3 h-3Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffabsolute bottom-0 left-0 right-0 p-1 bg-black/40 text-white text-[9px] text-center rounded-b-xl backdrop-blur-sm pointer-events-none opacity-0 group-hover:opacity-100 transition-opacity hidden sm:blockTa5d6ff"
Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3formatBytesTb4b4b4(Te6edf3imageTb4b4b4.Te6edf3sizeTb4b4b4) Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3audio Te6edf3attachment Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffnewMessageAudioTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffattachment-cardTa5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffattachment-card__body w-fullTa5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffattachment-card__titleTa5d6ff"Tff7b72>Te6edf3Voice Te6edf3NoteTff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffattachment-card__meta mb-2Ta5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3formatBytesTb4b4b4(Te6edf3newMessageAudioTb4b4b4.Te6edf3audio_blobTb4b4b4.Te6edf3sizeTb4b4b4) Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3AudioWaveformPlayer Tff7b72:Te6edf3srcTff7b72=Ta5d6ff"Ta5d6ffnewMessageAudio.audio_preview_urlTa5d6ff" Tff7b72:Te6edf3isTff7b72-Te6edf3outboundTff7b72=Ta5d6ff"Ta5d6fftrueTa5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3button Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffattachment-card__removeTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffremoveAudioAttachmentTa5d6ff"Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffdeleteTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-4 h-4Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3file Te6edf3attachments Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffnewMessageFiles.length > 0Ta5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex flex-wrap gap-2Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72forTff7b72=Ta5d6ff"Ta5d6fffile in newMessageFilesTa5d6ff" Tff7b72:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6fffile.name + file.sizeTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffattachment-chipTa5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon
Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffpaperclipTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-4 h-4 text-gray-500 dark:text-gray-300Ta5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm text-gray-800 dark:text-gray-200 truncate max-w-[160px]Ta5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3fileTb4b4b4.Te6edf3name Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-xs text-gray-500 dark:text-gray-400Ta5d6ff"Tff7b72>Tb4b4b4{Tb4b4b4{
Te6edf3formatBytesTb4b4b4(Te6edf3fileTb4b4b4.Te6edf3sizeTb4b4b4)
Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffattachment-chip__removeTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffremoveFileAttachment(file)Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffcloseTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-3.5 h-3.5Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3text Te6edf3input Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3textarea
Tffa657idTff7b72=Ta5d6ff"Ta5d6ffmessage-inputTa5d6ff"
Te6edf3refTff7b72=Ta5d6ff"Ta5d6ffmessage-inputTa5d6ff"
Te6edf3vTff7b72-Te6edf3modelTff7b72=Ta5d6ff"Ta5d6ffnewMessageTextTa5d6ff"
Tff7b72:Tff7b72readonlyTff7b72=Ta5d6ff"Ta5d6ffisSendingMessageTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffbg-white dark:bg-zinc-900 border border-gray-200 dark:border-zinc-800 text-gray-900 dark:text-zinc-100 text-sm rounded-xl focus:ring-2 focus:ring-blue-500/50 focus:border-blue-500 block w-full px-3 sm:px-4 py-2 resize-none shadow-sm transition-all placeholder:text-gray-400 dark:placeholder:text-zinc-500 min-h-[40px] max-h-[200px] overflow-y-autoTa5d6ff"
Te6edf3rowsTff7b72=Ta5d6ff"Ta5d6ff1Ta5d6ff"
Te6edf3spellcheckTff7b72=Ta5d6ff"Ta5d6fftrueTa5d6ff"
Tff7b72:Te6edf3placeholderTff7b72=Ta5d6ff"Ta5d6ff$t('messages.send_placeholder')Ta5d6ff"
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3enterTb4b4b4.Te6edf3exactTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Ta5d6ffonEnterPressedTa5d6ff"
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3enterTb4b4b4.Te6edf3shiftTb4b4b4.Te6edf3exactTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Ta5d6ffonShiftEnterPressedTa5d6ff"
Tff7b72>Tff7b72<Tff7b72/Te6edf3textareaTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3action Te6edf3button Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex flex-wrap gap-2 items-center mt-2Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3button Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffattachment-action-buttonTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffaddFilesToMessageTa5d6ff"Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffpaperclip-plusTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-4 h-4Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffhidden sm:inlineTa5d6ff"Tff7b72>Tb4b4b4{Tb4b4b4{ Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.add_filesTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffattachment-action-buttonTa5d6ff"
Tff7b72:Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ff$t('messages.paste_from_clipboard')Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffpasteFromClipboardTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffcontent-pasteTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-4 h-4Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffhidden sm:inlineTa5d6ff"Tff7b72>Te6edf3PasteTff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Te6edf3AddImageButton Tb4b4b4@Te6edf3addTff7b72-Te6edf3imageTff7b72=Ta5d6ff"Ta5d6ffonImageSelectedTa5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3AddAudioButton
Tff7b72:Te6edf3isTff7b72-Te6edf3recordingTff7b72-Te6edf3audioTff7b72-Te6edf3attachmentTff7b72=Ta5d6ff"Ta5d6ffisRecordingAudioAttachmentTa5d6ff"
Tb4b4b4@Te6edf3startTff7b72-Te6edf3recordingTff7b72=Ta5d6ff"Ta5d6ffstartRecordingAudioAttachment($event)Ta5d6ff"
Tb4b4b4@Te6edf3stopTff7b72-Te6edf3recordingTff7b72=Ta5d6ff"Ta5d6ffstopRecordingAudioAttachmentTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3spanTff7b72>Tb4b4b4{Tb4b4b4{ Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.recordingTa5d6ff"Tb4b4b4, Tb4b4b4{ Te6edf3durationTff7b72: Te6edf3audioAttachmentRecordingDuration Tb4b4b4}Tb4b4b4) Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3AddAudioButtonTff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffattachment-action-buttonTa5d6ff"
Tff7b72:Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ff$t('messages.share_location')Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffshareLocationTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffmap-markerTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-4 h-4Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffhidden sm:inlineTa5d6ff"Tff7b72>Tb4b4b4{Tb4b4b4{ Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.locationTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffattachment-action-buttonTa5d6ff"
Tff7b72:Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ff$t('messages.request_location')Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffrequestLocationTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffcrosshairs-questionTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-4 h-4Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffhidden sm:inlineTa5d6ff"Tff7b72>Tb4b4b4{Tb4b4b4{ Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.requestTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffattachment-action-buttonTa5d6ff"
Tff7b72:Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ff$t('messages.generate_paper_message')Ta5d6ff"
Tff7b72:Te6edf3disabledTff7b72=Ta5d6ff"Ta5d6ff!canSendMessage || isGeneratingPaperMessageTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffgeneratePaperMessageFromCompositionTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3template Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffisGeneratingPaperMessageTa5d6ff"Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-4 border-2 border-blue-500/20 border-t-blue-500 rounded-full animate-spinTa5d6ff"
Tff7b72>Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffhidden sm:inlineTa5d6ff"Tff7b72>Te6edf3GeneratingTb4b4b4.Tb4b4b4.Tb4b4b4.Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3templateTff7b72>
Tff7b72<Te6edf3template Te6edf3vTff7b72-Tff7b72elseTff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffqrcode-plusTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-4 h-4Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffhidden sm:inlineTa5d6ff"Tff7b72>Te6edf3LXMTff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3templateTff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Te6edf3button
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffhasTranslator && newMessageTextTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffattachment-action-buttonTa5d6ff"
Tff7b72:Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ff$t('translator.translate')Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6fftranslateMessageTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6fftranslateTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-4 h-4Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffhidden sm:inlineTa5d6ff"Tff7b72>Tb4b4b4{Tb4b4b4{ Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6fftranslator.translateTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffml-auto my-autoTa5d6ff"Tff7b72>
Tff7b72<Te6edf3SendMessageButton
Tff7b72:Te6edf3isTff7b72-Te6edf3sendingTff7b72-Te6edf3messageTff7b72=Ta5d6ff"Ta5d6ffisSendingMessageTa5d6ff"
Tff7b72:Te6edf3canTff7b72-Te6edf3sendTff7b72-Te6edf3messageTff7b72=Ta5d6ff"Ta5d6ffcanSendMessageTa5d6ff"
Tff7b72:Te6edf3deliveryTff7b72-Te6edf3methodTff7b72=Ta5d6ff"Ta5d6ffnewMessageDeliveryMethodTa5d6ff"
Tb4b4b4@Te6edf3sendTff7b72=Ta5d6ff"Ta5d6ffsendMessageTa5d6ff"
Tb4b4b4@Te6edf3deliveryTff7b72-Te6edf3methodTff7b72-Te6edf3changedTff7b72=Ta5d6ff"Ta5d6ffnewMessageDeliveryMethod = $eventTa5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3hidden Te6edf3file Te6edf3input Tff7b72for Te6edf3selecting Te6edf3files Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3input Te6edf3refTff7b72=Ta5d6ff"Ta5d6fffile-inputTa5d6ff" Te6edf3typeTff7b72=Ta5d6ff"Ta5d6fffileTa5d6ff" Te6edf3multiple Te6edf3styleTff7b72=Ta5d6ff"Ta5d6ffdisplay: noneTa5d6ff" Tb4b4b4@Te6edf3changeTff7b72=Ta5d6ff"Ta5d6ffonFileInputChangeTa5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3no Te6edf3peer Te6edf3selected Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72else Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex flex-col h-full overflow-y-auto bg-gray-50/50 dark:bg-zinc-950/50Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmax-w-4xl mx-auto w-full px-4 py-8 sm:py-12 flex flex-col items-centerTa5d6ff"Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3welcome Te6edf3header Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-center mb-12Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffinline-flex items-center justify-center p-4 rounded-3xl bg-blue-600 shadow-xl shadow-blue-500/20 mb-6Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffmessage-textTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-10 text-whiteTa5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3h1 Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-3xl font-black text-gray-900 dark:text-white tracking-tight mb-3Ta5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.no_active_chatTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3h1Tff7b72>
Tff7b72<Te6edf3p Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-gray-500 dark:text-zinc-400 max-w-sm mx-autoTa5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.select_peer_or_enter_addressTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3pTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3main Te6edf3actions Te6edf3grid Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffgrid grid-cols-2 sm:grid-cols-4 gap-4 w-full mb-12Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex flex-col items-center gap-3 p-6 rounded-3xl bg-white dark:bg-zinc-900 border border-gray-100 dark:border-zinc-800 hover:border-blue-500/50 hover:shadow-xl hover:shadow-blue-500/5 transition-all groupTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6fffocusComposeInputTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-12 rounded-2xl bg-blue-50 dark:bg-blue-900/20 text-blue-600 flex items-center justify-center group-hover:scale-110 transition-transformTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffplusTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-6Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm font-bold text-gray-900 dark:text-zinc-100Ta5d6ff"Tff7b72>Te6edf3New Te6edf3MessageTff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>

Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex flex-col items-center gap-3 p-6 rounded-3xl bg-white dark:bg-zinc-900 border border-gray-100 dark:border-zinc-800 hover:border-blue-500/50 hover:shadow-xl hover:shadow-blue-500/5 transition-all groupTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffsyncPropagationNodeTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-12 rounded-2xl bg-indigo-50 dark:bg-indigo-900/20 text-indigo-600 flex items-center justify-center group-hover:scale-110 transition-transformTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon
Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffsyncTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-6Ta5d6ff"
Tff7b72:Tff7b72classTff7b72=Ta5d6ff"Ta5d6ff{ 'animate-spin': isSyncingPropagationNode }Ta5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm font-bold text-gray-900 dark:text-zinc-100Ta5d6ff"Tff7b72>Tb4b4b4{Tb4b4b4{
Te6edf3isSyncingPropagationNode Tff7b72? Ta5d6ff"Ta5d6ffSyncing...Ta5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffSync NodeTa5d6ff"
Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>

Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex flex-col items-center gap-3 p-6 rounded-3xl bg-white dark:bg-zinc-900 border border-gray-100 dark:border-zinc-800 hover:border-blue-500/50 hover:shadow-xl hover:shadow-blue-500/5 transition-all groupTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffcopyMyAddressTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-12 rounded-2xl bg-emerald-50 dark:bg-emerald-900/20 text-emerald-600 flex items-center justify-center group-hover:scale-110 transition-transformTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffcontent-copyTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-6Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm font-bold text-gray-900 dark:text-zinc-100Ta5d6ff"Tff7b72>Te6edf3My Te6edf3AddressTff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>

Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex flex-col items-center gap-3 p-6 rounded-3xl bg-white dark:bg-zinc-900 border border-gray-100 dark:border-zinc-800 hover:border-blue-500/50 hover:shadow-xl hover:shadow-blue-500/5 transition-all groupTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ff$router.push({ name: 'identities' })Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-12 rounded-2xl bg-purple-50 dark:bg-purple-900/20 text-purple-600 flex items-center justify-center group-hover:scale-110 transition-transformTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffaccount-multipleTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-6Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3span Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm font-bold text-gray-900 dark:text-zinc-100Ta5d6ff"Tff7b72>Te6edf3IdentitiesTff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3latest Te6edf3chats Te6edf3section Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6fflatestConversations.length > 0Ta5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-full mb-12Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center justify-between mb-6Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3h2
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm font-black text-gray-400 dark:text-zinc-500 uppercase tracking-widest flex items-center gap-2Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffhistoryTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-4Ta5d6ff" Tff7b72/Tff7b72>
Te6edf3Latest Te6edf3Conversations
Tff7b72<Tff7b72/Te6edf3h2Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffgrid grid-cols-1 sm:grid-cols-2 gap-4Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72forTff7b72=Ta5d6ff"Ta5d6ffchat in latestConversationsTa5d6ff"
Tff7b72:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ffchat.destination_hashTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffgroup cursor-pointer p-4 bg-white dark:bg-zinc-900 border border-gray-100 dark:border-zinc-800 rounded-3xl hover:border-blue-500/50 hover:shadow-xl transition-all flex items-center gap-4Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ff$emit('update:selectedPeer', chat)Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex-shrink-0Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3LxmfUserIcon
Tff7b72:Te6edf3customTff7b72-Te6edf3imageTff7b72=Ta5d6ff"Ta5d6ffchat.contact_imageTa5d6ff"
Tff7b72:Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"
Te6edf3chatTb4b4b4.Te6edf3lxmf_user_icon Tff7b72&Tff7b72& Te6edf3chatTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3icon_name
Tff7b72? Te6edf3chatTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3icon_name
Tff7b72: 'Te6edf3account'
Ta5d6ff"
Tff7b72:Te6edf3iconTff7b72-Te6edf3foregroundTff7b72-Te6edf3colourTff7b72=Ta5d6ff"
Te6edf3chatTb4b4b4.Te6edf3lxmf_user_icon Tff7b72? Te6edf3chatTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3foreground_colour Tff7b72: ''
Ta5d6ff"
Tff7b72:Te6edf3iconTff7b72-Te6edf3backgroundTff7b72-Te6edf3colourTff7b72=Ta5d6ff"
Te6edf3chatTb4b4b4.Te6edf3lxmf_user_icon Tff7b72? Te6edf3chatTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3background_colour Tff7b72: ''
Ta5d6ff"
Te6edf3iconTff7b72-Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-12 sm:size-14Ta5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex-1 min-w-0Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center justify-between gap-2Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fffont-bold text-gray-900 dark:text-zinc-100 truncateTa5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3chatTb4b4b4.Te6edf3custom_display_name Tff7b72?Tff7b72? Te6edf3chatTb4b4b4.Te6edf3display_name Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] text-gray-400 dark:text-zinc-500 whitespace-nowrapTa5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3formatTimeAgoTb4b4b4(Te6edf3chatTb4b4b4.Te6edf3updated_atTb4b4b4) Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-xs text-gray-500 dark:text-zinc-500 truncate mt-0.5Ta5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3chatTb4b4b4.Te6edf3latest_message_preview Tff7b72|Tff7b72| Te6edf3chatTb4b4b4.Te6edf3latest_message_title Tff7b72|Tff7b72| Ta5d6ff"Ta5d6ffNo messages yetTa5d6ff" Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3MaterialDesignIcon
Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffchevron-rightTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-5 text-gray-300 dark:text-zinc-700 group-hover:text-blue-500 transition-colorsTa5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3address Te6edf3input Te6edf3composer Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-full max-w-xlTa5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffrelative groupTa5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffabsolute inset-y-0 left-0 pl-4 flex items-center pointer-events-noneTa5d6ff"Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon
Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffatTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-5 text-gray-400 group-focus-within:text-blue-500 transition-colorsTa5d6ff"
Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3input
Tffa657idTff7b72=Ta5d6ff"Ta5d6ffcompose-inputTa5d6ff"
Te6edf3refTff7b72=Ta5d6ff"Ta5d6ffcompose-inputTa5d6ff"
Te6edf3vTff7b72-Te6edf3modelTff7b72=Ta5d6ff"Ta5d6ffcomposeAddressTa5d6ff"
Tff7b72:Tff7b72readonlyTff7b72=Ta5d6ff"Ta5d6ffisSendingMessageTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6fftextTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-full bg-white dark:bg-zinc-900 border-2 border-gray-100 dark:border-zinc-800 text-gray-900 dark:text-zinc-100 text-base rounded-3xl focus:ring-4 focus:ring-blue-500/10 focus:border-blue-500 pl-12 pr-4 py-4 shadow-sm transition-all placeholder:text-gray-400 dark:placeholder:text-zinc-600 font-mediumTa5d6ff"
Te6edf3placeholderTff7b72=Ta5d6ff"Ta5d6ffEnter LXMF address to start a conversation...Ta5d6ff"
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3enterTb4b4b4.Te6edf3exactTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Ta5d6ffonComposeEnterPressedTa5d6ff"
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3upTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Ta5d6ffhandleComposeInputUpTa5d6ff"
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3downTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Ta5d6ffhandleComposeInputDownTa5d6ff"
Tb4b4b4@Te6edf3focusTff7b72=Ta5d6ff"Ta5d6ffisComposeInputFocused = trueTa5d6ff"
Tb4b4b4@Te6edf3blurTff7b72=Ta5d6ff"Ta5d6ffonComposeInputBlurTa5d6ff"
Tff7b72/Tff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3Suggestions Te6edf3Dropdown Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffisComposeInputFocused && composeSuggestions.length > 0Ta5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffabsolute z-50 left-0 right-0 bottom-full mb-4 bg-white dark:bg-zinc-900 border border-gray-100 dark:border-zinc-800 rounded-3xl shadow-2xl overflow-hidden animate-in fade-in slide-in-from-bottom-4 duration-300Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffp-2 space-y-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72forTff7b72=Ta5d6ff"Ta5d6ff(suggestion, index) in composeSuggestionsTa5d6ff"
Tff7b72:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ffsuggestion.hashTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffpx-4 py-3 flex items-center gap-3 cursor-pointer rounded-2xl transition-allTa5d6ff"
Tff7b72:Tff7b72classTff7b72=Ta5d6ff"Ta5d6ff[
Te6edf3index Tff7b72=Tff7b72=Tff7b72= Te6edf3selectedComposeSuggestionIndex
Tff7b72? 'Te6edf3bgTff7b72-Te6edf3blueT79c0ff-600 Te6edf3textTff7b72-Te6edf3white Te6edf3shadowTff7b72-Te6edf3lg'
Tff7b72: 'Te6edf3hoverTff7b72:Te6edf3bgTff7b72-Te6edf3grayT79c0ff-50 Te6edf3darkTff7b72:Te6edf3hoverTff7b72:Te6edf3bgTff7b72-Te6edf3zincT79c0ff-800Tff7b72/T79c0ff50 Te6edf3textTff7b72-Te6edf3grayT79c0ff-700 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3zincT79c0ff-300'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4@Te6edf3mousedownTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Ta5d6ffselectComposeSuggestion(suggestion)Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffshrink-0 size-10 rounded-xl flex items-center justify-centerTa5d6ff"
Tff7b72:Tff7b72classTff7b72=Ta5d6ff"Ta5d6ff[
Te6edf3index Tff7b72=Tff7b72=Tff7b72= Te6edf3selectedComposeSuggestionIndex
Tff7b72? 'Te6edf3bgTff7b72-Te6edf3whiteTff7b72/T79c0ff20'
Tff7b72: Te6edf3suggestionTb4b4b4.Te6edf3type Tff7b72=Tff7b72=Tff7b72= 'Te6edf3contact'
Tff7b72? 'Te6edf3bgTff7b72-Te6edf3blueT79c0ff-100 Te6edf3darkTff7b72:Te6edf3bgTff7b72-Te6edf3blueT79c0ff-900Tff7b72/T79c0ff40 Te6edf3textTff7b72-Te6edf3blueT79c0ff-600'
Tff7b72: 'Te6edf3bgTff7b72-Te6edf3grayT79c0ff-100 Te6edf3darkTff7b72:Te6edf3bgTff7b72-Te6edf3zincT79c0ff-800 Te6edf3textTff7b72-Te6edf3grayT79c0ff-500'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Tff7b72:Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffsuggestion.iconTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-5Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex-1 min-w-0Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm font-bold truncateTa5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3suggestionTb4b4b4.Te6edf3name Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-mono opacity-60 truncateTa5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3formatDestinationHashTb4b4b4(Te6edf3suggestionTb4b4b4.Te6edf3hashTb4b4b4) Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffsuggestion.type === 'contact'Ta5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] uppercase font-black tracking-widest opacity-40 px-2 py-1 rounded-md bg-black/5Ta5d6ff"
Tff7b72>
Te6edf3Contact
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3image Te6edf3modal Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3Transition
Te6edf3enterTff7b72-Te6edf3activeTff7b72-Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftransition ease-out duration-200Ta5d6ff"
Te6edf3enterTff7b72-Te6edf3fromTff7b72-Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffopacity-0Ta5d6ff"
Te6edf3enterTff7b72-Te6edf3toTff7b72-Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffopacity-100Ta5d6ff"
Te6edf3leaveTff7b72-Te6edf3activeTff7b72-Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftransition ease-in duration-150Ta5d6ff"
Te6edf3leaveTff7b72-Te6edf3fromTff7b72-Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffopacity-100Ta5d6ff"
Te6edf3leaveTff7b72-Te6edf3toTff7b72-Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffopacity-0Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffimageModalUrlTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fffixed inset-0 z-50 flex items-center justify-center bg-black/80 dark:bg-black/90 backdrop-blur-sm p-4Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffcloseImageModalTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffrelative max-w-7xl max-h-fullTa5d6ff" Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffabsolute -top-12 right-0 inline-flex items-center justify-center w-10 h-10 rounded-xl bg-white/10 dark:bg-zinc-900/10 hover:bg-white/20 dark:hover:bg-zinc-900/20 text-white transition-colorsTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffcloseImageModalTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffcloseTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-5Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Te6edf3img Tff7b72:Te6edf3srcTff7b72=Ta5d6ff"Ta5d6ffimageModalUrlTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmax-w-full max-h-[90vh] rounded-xl shadow-2xlTa5d6ff" Te6edf3altTff7b72=Ta5d6ff"Ta5d6ffImage previewTa5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3TransitionTff7b72>

Tff7b72<Te6edf3PaperMessageModal
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffisPaperMessageModalOpenTa5d6ff"
Tff7b72:Te6edf3messageTff7b72-Te6edf3hashTff7b72=Ta5d6ff"Ta5d6ffpaperMessageHashTa5d6ff"
Tff7b72:Te6edf3recipientTff7b72-Te6edf3hashTff7b72=Ta5d6ff"Ta5d6ffselectedPeer?.destination_hashTa5d6ff"
Tb4b4b4@Te6edf3closeTff7b72=Ta5d6ff"Ta5d6ffisPaperMessageModalOpen = falseTa5d6ff"
Tff7b72/Tff7b72>

Tff7b72<Te6edf3PaperMessageModal
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffisPaperMessageResultModalOpenTa5d6ff"
Tff7b72:Te6edf3initialTff7b72-Te6edf3uriTff7b72=Ta5d6ff"Ta5d6ffgeneratedPaperMessageUriTa5d6ff"
Tff7b72:Te6edf3recipientTff7b72-Te6edf3hashTff7b72=Ta5d6ff"Ta5d6ffselectedPeer?.destination_hashTa5d6ff"
Tb4b4b4@Te6edf3closeTff7b72=Ta5d6ff"
Te6edf3isPaperMessageResultModalOpen Tff7b72= Tffa657falseTb4b4b4;
Te6edf3generatedPaperMessageUri Tff7b72= Te6edf3nullTb4b4b4;
Ta5d6ff"
Tff7b72/Tff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3Raw Te6edf3Message Te6edf3Modal Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3Transition
Te6edf3enterTff7b72-Te6edf3activeTff7b72-Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftransition ease-out duration-200Ta5d6ff"
Te6edf3enterTff7b72-Te6edf3fromTff7b72-Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffopacity-0 scale-95Ta5d6ff"
Te6edf3enterTff7b72-Te6edf3toTff7b72-Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffopacity-100 scale-100Ta5d6ff"
Te6edf3leaveTff7b72-Te6edf3activeTff7b72-Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftransition ease-in duration-150Ta5d6ff"
Te6edf3leaveTff7b72-Te6edf3fromTff7b72-Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffopacity-100 scale-100Ta5d6ff"
Te6edf3leaveTff7b72-Te6edf3toTff7b72-Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffopacity-0 scale-95Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div
Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffisRawMessageModalOpenTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fffixed inset-0 z-[150] flex items-center justify-center p-4 bg-black/60 backdrop-blur-smTa5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Tffa657selfTff7b72=Ta5d6ff"Ta5d6ffisRawMessageModalOpen = falseTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffw-full max-w-2xl bg-white dark:bg-zinc-900 rounded-2xl shadow-2xl overflow-hidden flex flex-col max-h-[90vh]Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffpx-6 py-4 border-b border-gray-100 dark:border-zinc-800 flex items-center justify-between shrink-0Ta5d6ff"
Tff7b72>
Tff7b72<Te6edf3h3 Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-lg font-bold text-gray-900 dark:text-whiteTa5d6ff"Tff7b72>Te6edf3Raw Te6edf3LXMF Te6edf3MessageTff7b72<Tff7b72/Te6edf3h3Tff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-gray-400 hover:text-gray-500 dark:hover:text-zinc-300 transition-colorsTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffisRawMessageModalOpen = falseTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffcloseTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-6Ta5d6ff" Tff7b72/Tff7b72>
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffp-0 overflow-y-auto bg-gray-50 dark:bg-zinc-950 flex-growTa5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffp-6 space-y-6Ta5d6ff"Tff7b72>
Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3header Tff7b72/ Te6edf3status Te6edf3info Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffgrid grid-cols-1 md:grid-cols-2 gap-4Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffspace-y-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3label
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500Ta5d6ff"
Tff7b72>Te6edf3Message Te6edf3IDTff7b72<Tff7b72/Te6edf3label
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm font-mono text-gray-900 dark:text-zinc-200Ta5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3rawMessageDataTb4b4b4.Tffa657id Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffspace-y-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3label
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500Ta5d6ff"
Tff7b72>Te6edf3StateTff7b72<Tff7b72/Te6edf3label
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3span
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffinline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-insetTa5d6ff"
Tff7b72:Tff7b72classTff7b72=Ta5d6ff"
Te6edf3rawMessageDataTb4b4b4.Te6edf3state Tff7b72=Tff7b72=Tff7b72= 'Te6edf3delivered'
Tff7b72? 'Te6edf3bgTff7b72-Te6edf3greenT79c0ff-50 Te6edf3textTff7b72-Te6edf3greenT79c0ff-700 Te6edf3ringTff7b72-Te6edf3greenT79c0ff-600Tff7b72/T79c0ff20 Te6edf3darkTff7b72:Te6edf3bgTff7b72-Te6edf3greenT79c0ff-900Tff7b72/T79c0ff30 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3greenT79c0ff-400'
Tff7b72: 'Te6edf3bgTff7b72-Te6edf3blueT79c0ff-50 Te6edf3textTff7b72-Te6edf3blueT79c0ff-700 Te6edf3ringTff7b72-Te6edf3blueT79c0ff-700Tff7b72/T79c0ff10 Te6edf3darkTff7b72:Te6edf3bgTff7b72-Te6edf3blueT79c0ff-900Tff7b72/T79c0ff30 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3blueT79c0ff-400'
Ta5d6ff"
Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3rawMessageDataTb4b4b4.Te6edf3state Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Te6edf3span Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffrawMessageData.is_incomingTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] text-gray-400Ta5d6ff"
Tff7b72>Te6edf3IncomingTff7b72<Tff7b72/Te6edf3span
Tff7b72>
Tff7b72<Te6edf3span Te6edf3vTff7b72-Tff7b72else Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] text-gray-400Ta5d6ff"Tff7b72>Te6edf3OutboundTff7b72<Tff7b72/Te6edf3spanTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffspace-y-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3label
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500Ta5d6ff"
Tff7b72>Te6edf3Message Te6edf3HashTff7b72<Tff7b72/Te6edf3label
Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm font-mono break-all text-gray-900 dark:text-zinc-200 bg-white dark:bg-zinc-900 p-2 rounded border border-gray-100 dark:border-zinc-800Ta5d6ff"
Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3rawMessageDataTb4b4b4.Te6edf3hash Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffgrid grid-cols-1 md:grid-cols-2 gap-4Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffspace-y-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3label
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500Ta5d6ff"
Tff7b72>Te6edf3Source Te6edf3HashTff7b72<Tff7b72/Te6edf3label
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-xs font-mono break-all text-gray-900 dark:text-zinc-200Ta5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3rawMessageDataTb4b4b4.Te6edf3source_hash Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffspace-y-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3label
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500Ta5d6ff"
Tff7b72>Te6edf3Destination Te6edf3HashTff7b72<Tff7b72/Te6edf3label
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-xs font-mono break-all text-gray-900 dark:text-zinc-200Ta5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3rawMessageDataTb4b4b4.Te6edf3destination_hash Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffgrid grid-cols-2 md:grid-cols-4 gap-4Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffspace-y-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3label
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500Ta5d6ff"
Tff7b72>Te6edf3MethodTff7b72<Tff7b72/Te6edf3label
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm text-gray-900 dark:text-zinc-200 capitalizeTa5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3rawMessageDataTb4b4b4.Te6edf3method Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffspace-y-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3label
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500Ta5d6ff"
Tff7b72>Te6edf3RSSITff7b72<Tff7b72/Te6edf3label
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm text-gray-900 dark:text-zinc-200Ta5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3rawMessageDataTb4b4b4.Te6edf3rssi Tff7b72|Tff7b72| Ta5d6ff"Ta5d6ffN/ATa5d6ff" Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffspace-y-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3label
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500Ta5d6ff"
Tff7b72>Te6edf3SNRTff7b72<Tff7b72/Te6edf3label
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm text-gray-900 dark:text-zinc-200Ta5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3rawMessageDataTb4b4b4.Te6edf3snr Tff7b72|Tff7b72| Ta5d6ff"Ta5d6ffN/ATa5d6ff" Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffspace-y-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3label
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500Ta5d6ff"
Tff7b72>Te6edf3AttemptsTff7b72<Tff7b72/Te6edf3label
Tff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-sm text-gray-900 dark:text-zinc-200Ta5d6ff"Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3rawMessageDataTb4b4b4.Te6edf3delivery_attempts Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffspace-y-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3label
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500Ta5d6ff"
Tff7b72>Te6edf3Content Tff7b72/ Te6edf3App Te6edf3DataTff7b72<Tff7b72/Te6edf3label
Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-xs font-mono bg-white dark:bg-zinc-900 p-3 rounded border border-gray-100 dark:border-zinc-800 whitespace-pre-wrap break-all text-gray-800 dark:text-zinc-300Ta5d6ff"
Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3rawMessageDataTb4b4b4.Te6edf3content Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Te6edf3div Te6edf3vTff7b72-Tff7b72ifTff7b72=Ta5d6ff"Ta5d6ffrawMessageData.raw_uriTa5d6ff" Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffspace-y-1Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3label
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500Ta5d6ff"
Tff7b72>Te6edf3Raw Te6edf3LXMF Te6edf3URITff7b72<Tff7b72/Te6edf3label
Tff7b72>
Tff7b72<Te6edf3div
Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-mono bg-white dark:bg-zinc-900 p-2 rounded border border-gray-100 dark:border-zinc-800 break-all text-gray-600 dark:text-zinc-400Ta5d6ff"
Tff7b72>
Tb4b4b4{Tb4b4b4{ Te6edf3rawMessageDataTb4b4b4.Te6edf3raw_uri Tb4b4b4}Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>

Tff7b72<Tff7b72!Tff7b72-Tff7b72- Te6edf3JSON Te6edf3fallback Tff7b72for Te6edf3full Te6edf3detail Tff7b72-Tff7b72-Tff7b72>
Tff7b72<Te6edf3details Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffgroupTa5d6ff"Tff7b72>
Tff7b72<Te6edf3summary
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffflex items-center gap-2 cursor-pointer text-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500 hover:text-gray-600 dark:hover:text-zinc-300 transition-colorsTa5d6ff"
Tff7b72>
Tff7b72<Te6edf3MaterialDesignIcon
Te6edf3iconTff7b72-Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffchevron-rightTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffsize-4 group-open:rotate-90 transition-transformTa5d6ff"
Tff7b72/Tff7b72>
Te6edf3View Te6edf3Full Te6edf3JSON Te6edf3Object
Tff7b72<Tff7b72/Te6edf3summaryTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffmt-2 p-4 bg-black/5 dark:bg-black/20 rounded-lg overflow-x-autoTa5d6ff"Tff7b72>
Tff7b72<Te6edf3pre Tff7b72classTff7b72=Ta5d6ff"Ta5d6fftext-[10px] font-mono text-gray-600 dark:text-zinc-400Ta5d6ff"Tff7b72>Tb4b4b4{Tb4b4b4{
Te6edf3JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Te6edf3rawMessageDataTb4b4b4, Te6edf3nullTb4b4b4, T79c0ff2Tb4b4b4)
Tb4b4b4}Tb4b4b4}Tff7b72<Tff7b72/Te6edf3preTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3detailsTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Te6edf3div Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffpx-6 py-4 border-t border-gray-100 dark:border-zinc-800 flex justify-end shrink-0Ta5d6ff"Tff7b72>
Tff7b72<Te6edf3button
Te6edf3typeTff7b72=Ta5d6ff"Ta5d6ffbuttonTa5d6ff"
Tff7b72classTff7b72=Ta5d6ff"Ta5d6ffpx-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg text-sm font-bold transition-colorsTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Ta5d6ffisRawMessageModalOpen = falseTa5d6ff"
Tff7b72>
Te6edf3Close
Tff7b72<Tff7b72/Te6edf3buttonTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3divTff7b72>
Tff7b72<Tff7b72/Te6edf3TransitionTff7b72>
Tff7b72<Tff7b72/Te6edf3templateTff7b72>

Tff7b72<Te6edf3scriptTff7b72>
Te6edf3import Te6edf3Utils Te6edf3from Ta5d6ff"Ta5d6ff../../js/UtilsTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3DialogUtils Te6edf3from Ta5d6ff"Ta5d6ff../../js/DialogUtilsTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3MicrophoneRecorder Te6edf3from Ta5d6ff"Ta5d6ff../../js/MicrophoneRecorderTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3WebSocketConnection Te6edf3from Ta5d6ff"Ta5d6ff../../js/WebSocketConnectionTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3AddAudioButton Te6edf3from Ta5d6ff"Ta5d6ff./AddAudioButton.vueTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3dayjs Te6edf3from Ta5d6ff"Ta5d6ffdayjsTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3relativeTime Te6edf3from Ta5d6ff"Ta5d6ffdayjs/plugin/relativeTimeTa5d6ff"Tb4b4b4;

Te6edf3dayjsTb4b4b4.Te6edf3extendTb4b4b4(Te6edf3relativeTimeTb4b4b4)Tb4b4b4;
Te6edf3import Te6edf3SendMessageButton Te6edf3from Ta5d6ff"Ta5d6ff./SendMessageButton.vueTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3MaterialDesignIcon Te6edf3from Ta5d6ff"Ta5d6ff../MaterialDesignIcon.vueTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3ConversationDropDownMenu Te6edf3from Ta5d6ff"Ta5d6ff./ConversationDropDownMenu.vueTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3AddImageButton Te6edf3from Ta5d6ff"Ta5d6ff./AddImageButton.vueTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3AudioWaveformPlayer Te6edf3from Ta5d6ff"Ta5d6ff./AudioWaveformPlayer.vueTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3IconButton Te6edf3from Ta5d6ff"Ta5d6ff../IconButton.vueTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3LxmfUserIcon Te6edf3from Ta5d6ff"Ta5d6ff../LxmfUserIcon.vueTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3GlobalEmitter Te6edf3from Ta5d6ff"Ta5d6ff../../js/GlobalEmitterTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3ToastUtils Te6edf3from Ta5d6ff"Ta5d6ff../../js/ToastUtilsTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3PaperMessageModal Te6edf3from Ta5d6ff"Ta5d6ff./PaperMessageModal.vueTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3GlobalState Te6edf3from Ta5d6ff"Ta5d6ff../../js/GlobalStateTa5d6ff"Tb4b4b4;
Te6edf3import Te6edf3MarkdownRenderer Te6edf3from Ta5d6ff"Ta5d6ff../../js/MarkdownRendererTa5d6ff"Tb4b4b4;

Te6edf3export Tff7b72default Tb4b4b4{
Te6edf3nameTb4b4b4: Ta5d6ff"Ta5d6ffConversationViewerTa5d6ff"Tb4b4b4,
Te6edf3componentsTb4b4b4: Tb4b4b4{
Te6edf3IconButtonTb4b4b4,
Te6edf3AddImageButtonTb4b4b4,
Te6edf3ConversationDropDownMenuTb4b4b4,
Te6edf3MaterialDesignIconTb4b4b4,
Te6edf3SendMessageButtonTb4b4b4,
Te6edf3AddAudioButtonTb4b4b4,
Te6edf3AudioWaveformPlayerTb4b4b4,
Te6edf3PaperMessageModalTb4b4b4,
Te6edf3LxmfUserIconTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3propsTb4b4b4: Tb4b4b4{
Te6edf3configTb4b4b4: Tb4b4b4{
Te6edf3typeTb4b4b4: Te6edf3ObjectTb4b4b4,
Te6edf3requiredTb4b4b4: Tffa657falseTb4b4b4,
Tff7b72defaultTff7b72: Te6edf3nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3myLxmfAddressHashTb4b4b4: Tb4b4b4{
Te6edf3typeTb4b4b4: Te6edf3StringTb4b4b4,
Te6edf3requiredTb4b4b4: Tffa657trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3selectedPeerTb4b4b4: Tb4b4b4{
Te6edf3typeTb4b4b4: Te6edf3ObjectTb4b4b4,
Te6edf3requiredTb4b4b4: Tffa657trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3conversationsTb4b4b4: Tb4b4b4{
Te6edf3typeTb4b4b4: Te6edf3ArrayTb4b4b4,
Te6edf3requiredTb4b4b4: Tffa657trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3emitsTb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffcloseTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffreload-conversationsTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffupdate:selectedPeerTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffupdate-peer-trackingTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3GlobalStateTb4b4b4,
Te6edf3selectedPeerPathTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3selectedPeerLxmfStampInfoTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3selectedPeerSignalMetricsTb4b4b4: Te6edf3nullTb4b4b4,

Te6edf3lxmfMessagesRequestSequenceTb4b4b4: T79c0ff0Tb4b4b4,
Te6edf3chatItemsTb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,

Te6edf3isLoadingPreviousTb4b4b4: Tffa657falseTb4b4b4,
Te6edf3hasMorePreviousTb4b4b4: Tffa657trueTb4b4b4,

Te6edf3newMessageDeliveryMethodTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3newMessageTextTb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3newMessageImagesTb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3newMessageImageUrlsTb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3newMessageAudioTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3newMessageTelemetryTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3newMessageFilesTb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3isSendingMessageTb4b4b4: Tffa657falseTb4b4b4,
Te6edf3autoScrollOnNewMessageTb4b4b4: Tffa657trueTb4b4b4,
Te6edf3composeAddressTb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3isComposeInputFocusedTb4b4b4: Tffa657falseTb4b4b4,
Te6edf3selectedComposeSuggestionIndexTb4b4b4: T79c0ff-1Tb4b4b4,

Te6edf3isShareContactModalOpenTb4b4b4: Tffa657falseTb4b4b4,
Te6edf3contactsTb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3contactsSearchTb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,

Te6edf3isRecordingAudioAttachmentTb4b4b4: Tffa657falseTb4b4b4,
Te6edf3audioAttachmentMicrophoneRecorderTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3audioAttachmentMicrophoneRecorderCodecTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3audioAttachmentRecordingStartedAtTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3audioAttachmentRecordingDurationTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3audioAttachmentRecordingTimerTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3lxmfMessageAudioAttachmentCacheTb4b4b4: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3isDownloadingAudioTb4b4b4: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3expandedMessageInfoTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3imageModalUrlTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3isSelectedPeerBlockedTb4b4b4: Tffa657falseTb4b4b4,
Te6edf3isGeneratingPaperMessageTb4b4b4: Tffa657falseTb4b4b4,
Te6edf3generatedPaperMessageUriTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3isPaperMessageResultModalOpenTb4b4b4: Tffa657falseTb4b4b4,
Te6edf3lxmfAudioModeToCodec2ModeMapTb4b4b4: Tb4b4b4{
T8b949e// https://github.com/markqvist/LXMF/blob/master/LXMF/LXMF.py#L21
T79c0ff0x01Tff7b72: Ta5d6ff"Ta5d6ff450PWBTa5d6ff"Tb4b4b4, T8b949e// AM_CODEC2_450PWB
T79c0ff0x02Tff7b72: Ta5d6ff"Ta5d6ff450Ta5d6ff"Tb4b4b4, T8b949e// AM_CODEC2_450
T79c0ff0x03Tff7b72: Ta5d6ff"Ta5d6ff700CTa5d6ff"Tb4b4b4, T8b949e// AM_CODEC2_700C
T79c0ff0x04Tff7b72: Ta5d6ff"Ta5d6ff1200Ta5d6ff"Tb4b4b4, T8b949e// AM_CODEC2_1200
T79c0ff0x05Tff7b72: Ta5d6ff"Ta5d6ff1300Ta5d6ff"Tb4b4b4, T8b949e// AM_CODEC2_1300
T79c0ff0x06Tff7b72: Ta5d6ff"Ta5d6ff1400Ta5d6ff"Tb4b4b4, T8b949e// AM_CODEC2_1400
T79c0ff0x07Tff7b72: Ta5d6ff"Ta5d6ff1600Ta5d6ff"Tb4b4b4, T8b949e// AM_CODEC2_1600
T79c0ff0x08Tff7b72: Ta5d6ff"Ta5d6ff2400Ta5d6ff"Tb4b4b4, T8b949e// AM_CODEC2_2400
T79c0ff0x09Tff7b72: Ta5d6ff"Ta5d6ff3200Ta5d6ff"Tb4b4b4, T8b949e// AM_CODEC2_3200
Tb4b4b4}Tb4b4b4,
Te6edf3isPaperMessageModalOpenTb4b4b4: Tffa657falseTb4b4b4,
Te6edf3paperMessageHashTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3isRawMessageModalOpenTb4b4b4: Tffa657falseTb4b4b4,
Te6edf3rawMessageDataTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3hasTranslatorTb4b4b4: Tffa657falseTb4b4b4,
Te6edf3translatorLanguagesTb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3propagationNodeStatusTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3propagationStatusIntervalTb4b4b4: Te6edf3nullTb4b4b4,

Te6edf3showTelemetryInChatTb4b4b4: Tffa657falseTb4b4b4,
Te6edf3isTelemetryHistoryModalOpenTb4b4b4: Tffa657falseTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTb4b4b4: Tb4b4b4{
Te6edf3messageIconStyleTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3size Tff7b72= Te6edf3NumberTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3message_icon_sizeTb4b4b4) Tff7b72|Tff7b72| T79c0ff28Tb4b4b4;
Tff7b72return Tb4b4b4{
Te6edf3widthTb4b4b4: `Te6edf3$Tb4b4b4{Te6edf3sizeTb4b4b4}Te6edf3px`Tb4b4b4,
Te6edf3heightTb4b4b4: `Te6edf3$Tb4b4b4{Te6edf3sizeTb4b4b4}Te6edf3px`Tb4b4b4,
Te6edf3minWidthTb4b4b4: `Te6edf3$Tb4b4b4{Te6edf3sizeTb4b4b4}Te6edf3px`Tb4b4b4,
Te6edf3minHeightTb4b4b4: `Te6edf3$Tb4b4b4{Te6edf3sizeTb4b4b4}Te6edf3px`Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isSyncingPropagationNodeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4[
Ta5d6ff"Ta5d6ffpath_requestedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflink_establishingTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflink_establishedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffrequest_sentTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffreceivingTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffresponse_receivedTa5d6ff"Tb4b4b4,
Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3propagationNodeStatusTff7b72?Tb4b4b4.Te6edf3stateTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3blockedDestinationsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3GlobalStateTb4b4b4.Te6edf3blockedDestinationsTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3filteredContactsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3contactsSearchTb4b4b4) Tff7b72return Te6edf3thisTb4b4b4.Te6edf3contactsTb4b4b4;
Tff7b72const Te6edf3s Tff7b72= Te6edf3thisTb4b4b4.Te6edf3contactsSearchTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3thisTb4b4b4.Te6edf3contactsTb4b4b4.Te6edf3filterTb4b4b4(
Tb4b4b4(Te6edf3cTb4b4b4) Tff7b72=Tff7b72> Te6edf3cTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3sTb4b4b4) Tff7b72|Tff7b72| Te6edf3cTb4b4b4.Te6edf3remote_identity_hashTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3sTb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isMobileTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72/Te6edf3AndroidTff7b72|Te6edf3webOSTff7b72|Te6edf3iPhoneTff7b72|Te6edf3iPadTff7b72|Te6edf3iPodTff7b72|Te6edf3BlackBerryTff7b72|Te6edf3IEMobileTff7b72|Te6edf3Opera Te6edf3MiniTff7b72/Te6edf3iTb4b4b4.Te6edf3testTb4b4b4(Te6edf3navigatorTb4b4b4.Te6edf3userAgentTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3latestConversationsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3thisTb4b4b4.Te6edf3conversationsTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3composeSuggestionsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3isComposeInputFocusedTb4b4b4) Tff7b72return Tb4b4b4[Tb4b4b4]Tb4b4b4;

Tff7b72const Te6edf3search Tff7b72= Te6edf3thisTb4b4b4.Te6edf3composeAddressTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3suggestions Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3seenHashes Tff7b72= Te6edf3new Te6edf3SetTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// 1. Check contacts
Te6edf3thisTb4b4b4.Te6edf3contactsTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Tff7b72const Te6edf3hash Tff7b72= Te6edf3cTb4b4b4.Te6edf3remote_identity_hashTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3seenHashesTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3search Tff7b72|Tff7b72| Te6edf3cTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3searchTb4b4b4) Tff7b72|Tff7b72| Te6edf3hashTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3searchTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3suggestionsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTb4b4b4: Te6edf3cTb4b4b4.Te6edf3nameTb4b4b4,
Te6edf3hashTb4b4b4: Te6edf3hashTb4b4b4,
Te6edf3typeTb4b4b4: Ta5d6ff"Ta5d6ffcontactTa5d6ff"Tb4b4b4,
Te6edf3iconTb4b4b4: Ta5d6ff"Ta5d6ffaccountTa5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3seenHashesTb4b4b4.Te6edf3addTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// 2. Check recent conversations
Te6edf3thisTb4b4b4.Te6edf3conversationsTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Tff7b72const Te6edf3hash Tff7b72= Te6edf3cTb4b4b4.Te6edf3destination_hashTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3seenHashesTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3name Tff7b72= Te6edf3cTb4b4b4.Te6edf3custom_display_name Tff7b72?Tff7b72? Te6edf3cTb4b4b4.Te6edf3display_nameTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3search Tff7b72|Tff7b72| Te6edf3nameTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3searchTb4b4b4) Tff7b72|Tff7b72| Te6edf3hashTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3searchTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3suggestionsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTb4b4b4: Te6edf3nameTb4b4b4,
Te6edf3hashTb4b4b4: Te6edf3hashTb4b4b4,
Te6edf3typeTb4b4b4: Ta5d6ff"Ta5d6ffrecentTa5d6ff"Tb4b4b4,
Te6edf3iconTb4b4b4: Ta5d6ff"Ta5d6ffhistoryTa5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3seenHashesTb4b4b4.Te6edf3addTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Tff7b72return Te6edf3suggestionsTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff10Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3canSendMessageTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// can send if message text is present
Tff7b72const Te6edf3messageText Tff7b72= Te6edf3thisTb4b4b4.Te6edf3newMessageTextTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hasText Tff7b72= Te6edf3messageText Tff7b72!Tff7b72= Te6edf3null Tff7b72&Tff7b72& Te6edf3messageText Tff7b72!Tff7b72=Tff7b72= Ta5d6ff"Ta5d6ff"Tb4b4b4;

T8b949e// or if any attachments are present
Tff7b72const Te6edf3hasAttachments Tff7b72=
Te6edf3thisTb4b4b4.Te6edf3newMessageImagesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0 Tff7b72|Tff7b72|
Te6edf3thisTb4b4b4.Te6edf3newMessageAudio Tff7b72!Tff7b72= Te6edf3null Tff7b72|Tff7b72|
Te6edf3thisTb4b4b4.Te6edf3newMessageFilesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0 Tff7b72|Tff7b72|
Te6edf3thisTb4b4b4.Te6edf3newMessageTelemetry Tff7b72!Tff7b72= Te6edf3nullTb4b4b4;

Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hasText Tff7b72&Tff7b72& Tff7b72!Te6edf3hasAttachmentsTb4b4b4) Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}

T8b949e// can't send if already sending
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3isSendingMessageTb4b4b4) Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}

Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3selectedPeerChatItemsTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// get all chat items related to the selected peer
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3chatItemTb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3type Tff7b72=Tff7b72=Tff7b72= Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isFromSelectedPeer Tff7b72=
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3source_hash Tff7b72=Tff7b72=Tff7b72= Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4;
Tff7b72const Te6edf3isToSelectedPeer Tff7b72=
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3destination_hash Tff7b72=Tff7b72=Tff7b72= Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4;

Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Te6edf3isFromSelectedPeer Tff7b72|Tff7b72| Te6edf3isToSelectedPeerTb4b4b4)Tb4b4b4) Tff7b72return Tffa657falseTb4b4b4;

T8b949e// filter telemetry if disabled
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3showTelemetryInChat Tff7b72&Tff7b72& Te6edf3thisTb4b4b4.Te6edf3isTelemetryOnlyTb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}

Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4}

Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// no peer, so no chat items!
Tff7b72return Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3selectedPeerTelemetryItemsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tff7b72return Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72return Te6edf3thisTb4b4b4.Te6edf3chatItems
Tb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3chatItemTb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3type Tff7b72=Tff7b72=Tff7b72= Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isFromSelectedPeer Tff7b72=
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3source_hash Tff7b72=Tff7b72=Tff7b72= Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4;
Tff7b72const Te6edf3isToSelectedPeer Tff7b72=
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3destination_hash Tff7b72=Tff7b72=Tff7b72= Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4;

Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Te6edf3isFromSelectedPeer Tff7b72|Tff7b72| Te6edf3isToSelectedPeerTb4b4b4)Tb4b4b4) Tff7b72return Tffa657falseTb4b4b4;

Tff7b72return Te6edf3thisTb4b4b4.Te6edf3isTelemetryOnlyTb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}Tb4b4b4)
Tb4b4b4.Te6edf3reverseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3selectedPeerChatItemsReversedTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// ensure a copy of the array is returned in reverse order
Tff7b72return Te6edf3thisTb4b4b4.Te6edf3selectedPeerChatItemsTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3messageTb4b4b4) Tff7b72=Tff7b72> Te6edf3messageTb4b4b4)Tb4b4b4.Te6edf3reverseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3oldestMessageIdTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3selectedPeerChatItemsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3thisTb4b4b4.Te6edf3selectedPeerChatItemsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3lxmf_messageTb4b4b4.Tffa657idTb4b4b4;
Tb4b4b4}

Tff7b72return Te6edf3nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3hasFailedOrCancelledMessagesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3thisTb4b4b4.Te6edf3selectedPeerChatItemsTb4b4b4.Te6edf3someTb4b4b4(
Tb4b4b4(Te6edf3itemTb4b4b4) Tff7b72=Tff7b72> Te6edf3itemTb4b4b4.Te6edf3is_outbound Tff7b72&Tff7b72& Tb4b4b4[Ta5d6ff"Ta5d6fffailedTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffcancelledTa5d6ff"Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3stateTb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3telemetryBatteryHistoryTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3thisTb4b4b4.Te6edf3selectedPeerTelemetryItems
Tb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3itemTb4b4b4) Tff7b72=Tff7b72> Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3telemetryTff7b72?Tb4b4b4.Te6edf3batteryTb4b4b4)
Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3itemTb4b4b4) Tff7b72=Tff7b72> Tb4b4b4(Tb4b4b4{
Te6edf3xTb4b4b4: Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3timestampTb4b4b4,
Te6edf3yTb4b4b4: Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3batteryTb4b4b4.Te6edf3charge_percentTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3sortTb4b4b4(Tb4b4b4(Te6edf3aTb4b4b4, Te6edf3bTb4b4b4) Tff7b72=Tff7b72> Te6edf3aTb4b4b4.Te6edf3x Tff7b72- Te6edf3bTb4b4b4.Te6edf3xTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3batterySparklinePathTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3history Tff7b72= Te6edf3thisTb4b4b4.Te6edf3telemetryBatteryHistoryTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3historyTb4b4b4.Te6edf3length Tff7b72< T79c0ff2Tb4b4b4) Tff7b72return Ta5d6ff"Ta5d6ff"Tb4b4b4;

Tff7b72const Te6edf3minX Tff7b72= Te6edf3historyTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3xTb4b4b4;
Tff7b72const Te6edf3maxX Tff7b72= Te6edf3historyTb4b4b4[Te6edf3historyTb4b4b4.Te6edf3length Tff7b72- T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3xTb4b4b4;
Tff7b72const Te6edf3rangeX Tff7b72= Te6edf3maxX Tff7b72- Te6edf3minX Tff7b72|Tff7b72| T79c0ff1Tb4b4b4;

Tff7b72return Te6edf3history
Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3pTb4b4b4, Te6edf3iTb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Tff7b72const Te6edf3x Tff7b72= Tb4b4b4(Tb4b4b4(Te6edf3pTb4b4b4.Te6edf3x Tff7b72- Te6edf3minXTb4b4b4) Tff7b72/ Te6edf3rangeXTb4b4b4) Tff7b72* T79c0ff100Tb4b4b4;
Tff7b72const Te6edf3y Tff7b72= T79c0ff100 Tff7b72- Te6edf3pTb4b4b4.Te6edf3yTb4b4b4; T8b949e// SVG y is top-down
Tff7b72return `Te6edf3$Tb4b4b4{Te6edf3i Tff7b72=Tff7b72=Tff7b72= T79c0ff0 Tff7b72? Ta5d6ff"Ta5d6ffMTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffLTa5d6ff"Tb4b4b4} Te6edf3$Tb4b4b4{Te6edf3xTb4b4b4} Te6edf3$Tb4b4b4{Te6edf3yTb4b4b4}`Tb4b4b4;
Tb4b4b4}Tb4b4b4)
Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff"Ta5d6ff Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3watchTb4b4b4: Tb4b4b4{
Te6edf3selectedPeerTb4b4b4: Tb4b4b4{
Te6edf3handlerTb4b4b4(Te6edf3newPeerTb4b4b4, Te6edf3oldPeerTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3oldPeerTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3saveDraftTb4b4b4(Te6edf3oldPeerTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3thisTb4b4b4.Te6edf3checkIfSelectedPeerBlockedTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3initialLoadTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3newPeerTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3loadDraftTb4b4b4(Te6edf3newPeerTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3immediateTb4b4b4: Tffa657trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3selectedPeerChatItemsTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// chat items for selected peer changed, so lets process any available audio
Te6edf3await Te6edf3thisTb4b4b4.Te6edf3processAudioForSelectedPeerChatItemsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3newMessageTextTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3adjustTextareaHeightTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Ta5d6ff"Ta5d6ffconfig.translator_enabledTa5d6ff"Tff7b72: Tb4b4b4{
Te6edf3handlerTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3checkTranslatorTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3blockedDestinationsTb4b4b4: Tb4b4b4{
Te6edf3handlerTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3checkIfSelectedPeerBlockedTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3deepTb4b4b4: Tffa657trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3beforeUnmountTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// stop listening for websocket messages
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3offTb4b4b4(Ta5d6ff"Ta5d6ffmessageTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4)Tb4b4b4;
Te6edf3GlobalEmitterTb4b4b4.Te6edf3offTb4b4b4(Ta5d6ff"Ta5d6ffcompose-new-messageTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4.Te6edf3onComposeNewMessageEventTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3propagationStatusIntervalTb4b4b4) Tb4b4b4{
Te6edf3clearIntervalTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3propagationStatusIntervalTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// listen for websocket messages
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"Ta5d6ffmessageTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4)Tb4b4b4;

T8b949e// listen for compose new message event
Te6edf3GlobalEmitterTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"Ta5d6ffcompose-new-messageTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4.Te6edf3onComposeNewMessageEventTb4b4b4)Tb4b4b4;

T8b949e// check translator
Te6edf3thisTb4b4b4.Te6edf3checkTranslatorTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// fetch contacts for suggestions
Te6edf3thisTb4b4b4.Te6edf3fetchContactsTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// fetch propagation status
Te6edf3thisTb4b4b4.Te6edf3updatePropagationNodeStatusTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3propagationStatusInterval Tff7b72= Te6edf3setIntervalTb4b4b4(Tb4b4b4(Tb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3updatePropagationNodeStatusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff2000Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTb4b4b4: Tb4b4b4{
Te6edf3renderMarkdownTb4b4b4(Te6edf3textTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3MarkdownRendererTb4b4b4.Te6edf3renderTb4b4b4(Te6edf3textTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3handleMessageClickTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3nomadnetLink Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3closestTb4b4b4(Ta5d6ff"Ta5d6ff.nomadnet-linkTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3nomadnetLinkTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3preventDefaultTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3url Tff7b72= Te6edf3nomadnetLinkTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"Ta5d6ffdata-nomadnet-urlTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4{
Tff7b72const Tb4b4b4[Te6edf3hashTb4b4b4, Tb4b4b4.Tb4b4b4.Tb4b4b4.Te6edf3pathPartsTb4b4b4] Tff7b72= Te6edf3urlTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"Ta5d6ff:Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3path Tff7b72= Te6edf3pathPartsTb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff"Ta5d6ff:Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3routeName Tff7b72= Te6edf3thisTb4b4b4.Te6edf3$routeTb4b4b4.Te6edf3metaTb4b4b4.Te6edf3isPopout Tff7b72? Ta5d6ff"Ta5d6ffnomadnetwork-popoutTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffnomadnetworkTa5d6ff"Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTb4b4b4: Te6edf3routeNameTb4b4b4,
Te6edf3paramsTb4b4b4: Tb4b4b4{ Te6edf3destinationHashTff7b72: Te6edf3hash Tb4b4b4}Tb4b4b4,
Te6edf3queryTb4b4b4: Tb4b4b4{ Te6edf3pathTff7b72: Te6edf3path Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3updatePropagationNodeStatusTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"Ta5d6ff/api/v1/lxmf/propagation-node/statusTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3propagationNodeStatus Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3propagation_node_statusTb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4{
T8b949e// do nothing on error
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3syncPropagationNodeTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3GlobalEmitterTb4b4b4.Te6edf3emitTb4b4b4(Ta5d6ff"Ta5d6ffsync-propagation-nodeTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3copyMyAddressTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
Te6edf3await Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3writeTextTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3myLxmfAddressHashTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.address_copiedTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.failed_copy_addressTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3focusComposeInputTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Tff7b72const Te6edf3input Tff7b72= Te6edf3documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff"Ta5d6ffcompose-inputTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3inputTb4b4b4) Tb4b4b4{
Te6edf3inputTb4b4b4.Te6edf3focusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3fetchContactsTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"Ta5d6ff/api/v1/telephone/contactsTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3contacts Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"Ta5d6ffFailed to fetch contacts:Ta5d6ff"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3checkTranslatorTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3translator_enabledTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3hasTranslator Tff7b72= Tffa657falseTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"Ta5d6ff/api/v1/translator/languagesTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3translatorLanguages Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3languages Tff7b72|Tff7b72| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3hasTranslator Tff7b72= Te6edf3thisTb4b4b4.Te6edf3translatorLanguagesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"Ta5d6ffFailed to check translator:Ta5d6ff"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3hasTranslator Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3translateMessageTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3newMessageText Tff7b72|Tff7b72| Te6edf3thisTb4b4b4.Te6edf3isSendingMessageTb4b4b4) Tff7b72returnTb4b4b4;

Te6edf3try Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3isSendingMessage Tff7b72= Tffa657trueTb4b4b4;
Tff7b72const Te6edf3targetLang Tff7b72= Te6edf3thisTb4b4b4.Te6edf3$i18nTb4b4b4.Te6edf3locale Tff7b72|Tff7b72| Ta5d6ff"Ta5d6ffenTa5d6ff"Tb4b4b4;
Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"Ta5d6ff/api/v1/translator/translateTa5d6ff"Tb4b4b4, Tb4b4b4{
Te6edf3textTb4b4b4: Te6edf3thisTb4b4b4.Te6edf3newMessageTextTb4b4b4,
Te6edf3source_langTb4b4b4: Ta5d6ff"Ta5d6ffautoTa5d6ff"Tb4b4b4,
Te6edf3target_langTb4b4b4: Te6edf3targetLangTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3translated_textTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3newMessageText Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3translated_textTb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3adjustTextareaHeightTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Ta5d6ffTranslation failed:Ta5d6ff"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.translation_failedTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3finally Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3isSendingMessage Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3adjustTextareaHeightTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3textarea Tff7b72= Te6edf3thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"Ta5d6ffmessage-inputTa5d6ff"Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3textareaTb4b4b4) Tb4b4b4{
Te6edf3textareaTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3height Tff7b72= Ta5d6ff"Ta5d6ffautoTa5d6ff"Tb4b4b4;
Te6edf3textareaTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3height Tff7b72= Te6edf3MathTb4b4b4.Te6edf3minTb4b4b4(Te6edf3textareaTb4b4b4.Te6edf3scrollHeightTb4b4b4, T79c0ff200Tb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ffpxTa5d6ff"Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3checkIfSelectedPeerBlockedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3isSelectedPeerBlocked Tff7b72= Tffa657falseTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3thisTb4b4b4.Te6edf3isSelectedPeerBlocked Tff7b72= Te6edf3GlobalStateTb4b4b4.Te6edf3blockedDestinationsTb4b4b4.Te6edf3someTb4b4b4(
Tb4b4b4(Te6edf3bTb4b4b4) Tff7b72=Tff7b72> Te6edf3bTb4b4b4.Te6edf3destination_hash Tff7b72=Tff7b72=Tff7b72= Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hash
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3loadDraftTb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
Tff7b72const Te6edf3drafts Tff7b72= Te6edf3JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3localStorageTb4b4b4.Te6edf3getItemTb4b4b4(Ta5d6ff"Ta5d6ffmeshchat.draftsTa5d6ff"Tb4b4b4) Tff7b72|Tff7b72| Ta5d6ff"Ta5d6ff{}Ta5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3newMessageText Tff7b72= Te6edf3draftsTb4b4b4[Te6edf3destinationHashTb4b4b4] Tff7b72|Tff7b72| Ta5d6ff"Ta5d6ff"Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3adjustTextareaHeightTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Ta5d6ffFailed to load draft:Ta5d6ff"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3saveDraftTb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
Tff7b72const Te6edf3drafts Tff7b72= Te6edf3JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3localStorageTb4b4b4.Te6edf3getItemTb4b4b4(Ta5d6ff"Ta5d6ffmeshchat.draftsTa5d6ff"Tb4b4b4) Tff7b72|Tff7b72| Ta5d6ff"Ta5d6ff{}Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3newMessageTextTb4b4b4) Tb4b4b4{
Te6edf3draftsTb4b4b4[Te6edf3destinationHashTb4b4b4] Tff7b72= Te6edf3thisTb4b4b4.Te6edf3newMessageTextTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3delete Te6edf3draftsTb4b4b4[Te6edf3destinationHashTb4b4b4]Tb4b4b4;
Tb4b4b4}
Te6edf3localStorageTb4b4b4.Te6edf3setItemTb4b4b4(Ta5d6ff"Ta5d6ffmeshchat.draftsTa5d6ff"Tb4b4b4, Te6edf3JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Te6edf3draftsTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Ta5d6ffFailed to save draft:Ta5d6ff"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3closeTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"Ta5d6ffcloseTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onMessagesScrollTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
T8b949e// check if messages is scrolled to bottom
Tff7b72const Te6edf3element Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4;
Tff7b72const Te6edf3isAtBottom Tff7b72= Te6edf3elementTb4b4b4.Te6edf3scrollTop Tff7b72=Tff7b72=Tff7b72= Te6edf3elementTb4b4b4.Te6edf3scrollHeight Tff7b72- Te6edf3elementTb4b4b4.Te6edf3offsetHeightTb4b4b4;

T8b949e// we want to auto scroll if user is at bottom of messages list
Te6edf3thisTb4b4b4.Te6edf3autoScrollOnNewMessage Tff7b72= Te6edf3isAtBottomTb4b4b4;

T8b949e// load previous when scrolling near top of page
Tff7b72if Tb4b4b4(Te6edf3elementTb4b4b4.Te6edf3scrollTop Tff7b72<Tff7b72= T79c0ff500Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3loadPreviousTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3initialLoadTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// reset
Te6edf3thisTb4b4b4.Te6edf3chatItems Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3hasMorePrevious Tff7b72= Tffa657trueTb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3selectedPeerPath Tff7b72= Te6edf3nullTb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3selectedPeerLxmfStampInfo Tff7b72= Te6edf3nullTb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3selectedPeerSignalMetrics Tff7b72= Te6edf3nullTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

Te6edf3thisTb4b4b4.Te6edf3getPeerPathTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3getPeerLxmfStampInfoTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3getPeerSignalMetricsTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// load 1 page of previous messages
Te6edf3await Te6edf3thisTb4b4b4.Te6edf3loadPreviousTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// scroll to bottom
Te6edf3thisTb4b4b4.Te6edf3scrollMessagesToBottomTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// auto load audio
Te6edf3thisTb4b4b4.Te6edf3autoLoadAudioAttachmentsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3loadPreviousTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// do nothing if already loading
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3isLoadingPreviousTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

Te6edf3thisTb4b4b4.Te6edf3isLoadingPrevious Tff7b72= Tffa657trueTb4b4b4;

Te6edf3try Tb4b4b4{
Tff7b72const Te6edf3seq Tff7b72= Tff7b72+Tff7b72+Te6edf3thisTb4b4b4.Te6edf3lxmfMessagesRequestSequenceTb4b4b4;

T8b949e// fetch lxmf messages from "us to destination" and from "destination to us"
Tff7b72const Te6edf3pageSize Tff7b72= T79c0ff30Tb4b4b4;
Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(
`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3lxmfTff7b72-Te6edf3messagesTff7b72/Te6edf3conversationTff7b72/Te6edf3$Tb4b4b4{Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4}`Tb4b4b4,
Tb4b4b4{
Te6edf3paramsTb4b4b4: Tb4b4b4{
Te6edf3countTb4b4b4: Te6edf3pageSizeTb4b4b4,
Te6edf3orderTb4b4b4: Ta5d6ff"Ta5d6ffdescTa5d6ff"Tb4b4b4,
Te6edf3after_idTb4b4b4: Te6edf3thisTb4b4b4.Te6edf3oldestMessageIdTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}
Tb4b4b4)Tb4b4b4;

T8b949e// do nothing if response is for a previous request
Tff7b72if Tb4b4b4(Te6edf3seq Tff7b72!Tff7b72=Tff7b72= Te6edf3thisTb4b4b4.Te6edf3lxmfMessagesRequestSequenceTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"Ta5d6ffignoring response for previous lxmf messages requestTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// convert lxmf messages to chat items
Tff7b72const Te6edf3chatItems Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3lxmfMessages Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messagesTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3lxmfMessage Te6edf3of Te6edf3lxmfMessagesTb4b4b4) Tb4b4b4{
Te6edf3chatItemsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTb4b4b4: Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4,
Te6edf3is_outboundTb4b4b4: Te6edf3thisTb4b4b4.Te6edf3myLxmfAddressHash Tff7b72=Tff7b72=Tff7b72= Te6edf3lxmfMessageTb4b4b4.Te6edf3source_hashTb4b4b4,
Te6edf3lxmf_messageTb4b4b4: Te6edf3lxmfMessageTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// add messages to start of existing messages
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3chatItem Te6edf3of Te6edf3chatItemsTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3unshiftTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// no more previous to load if received items is less than expected page size
Tff7b72if Tb4b4b4(Te6edf3chatItemsTb4b4b4.Te6edf3length Tff7b72< Te6edf3pageSizeTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3hasMorePrevious Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}

T8b949e// auto load audio
Te6edf3thisTb4b4b4.Te6edf3autoLoadAudioAttachmentsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4{
T8b949e// do nothing
Tb4b4b4} Te6edf3finally Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3isLoadingPrevious Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3getParsedItemsTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3content Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3contentTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3contentTb4b4b4) Tff7b72return Te6edf3nullTb4b4b4;

Tff7b72const Te6edf3items Tff7b72= Tb4b4b4{
Te6edf3contactTb4b4b4: Te6edf3nullTb4b4b4,
Te6edf3paperMessageTb4b4b4: Te6edf3nullTb4b4b4,
Tb4b4b4}Tb4b4b4;

T8b949e// Parse contact: Contact: ivan <ca314c30b27eacec5f6ca6ac504e94c9> [LXMF: ...] [LXST: ...]
Tff7b72const Te6edf3contactMatch Tff7b72= Te6edf3contentTb4b4b4.Te6edf3matchTb4b4b4(
Tff7b72/Tff7b72^Te6edf3ContactTff7b72:\Te6edf3sTff7b72+Tb4b4b4(Tb4b4b4.Tff7b72+Tff7b72?Tb4b4b4)\Te6edf3sTff7b72+Tff7b72<Tb4b4b4(Tb4b4b4[Te6edf3aTff7b72-Te6edf3fATff7b72-Te6edf3F0T79c0ff-9Tb4b4b4]Tb4b4b4{T79c0ff32Tb4b4b4}Tb4b4b4)Tff7b72>Tb4b4b4(Tff7b72?Tff7b72:\Te6edf3sTff7b72+\Tb4b4b4[Te6edf3LXMFTff7b72:\Te6edf3sTff7b72+Tb4b4b4(Tb4b4b4[Te6edf3aTff7b72-Te6edf3fATff7b72-Te6edf3F0T79c0ff-9Tb4b4b4]Tb4b4b4{T79c0ff32Tb4b4b4}Tb4b4b4)\Tb4b4b4]Tb4b4b4)Tff7b72?Tb4b4b4(Tff7b72?Tff7b72:\Te6edf3sTff7b72+\Tb4b4b4[Te6edf3LXSTTff7b72:\Te6edf3sTff7b72+Tb4b4b4(Tb4b4b4[Te6edf3aTff7b72-Te6edf3fATff7b72-Te6edf3F0T79c0ff-9Tb4b4b4]Tb4b4b4{T79c0ff32Tb4b4b4}Tb4b4b4)\Tb4b4b4]Tb4b4b4)Tff7b72?Tff7b72/Te6edf3i
Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3contactMatchTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3contactHash Tff7b72= Te6edf3contactMatchTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3lxmfAddress Tff7b72= Te6edf3contactMatchTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3lxstAddress Tff7b72= Te6edf3contactMatchTb4b4b4[T79c0ff4Tb4b4b4]Tb4b4b4;

T8b949e// try to find enriched info from existing conversations/peers
Tff7b72const Te6edf3existing Tff7b72= Te6edf3thisTb4b4b4.Te6edf3conversationsTb4b4b4.Te6edf3findTb4b4b4(
Tb4b4b4(Te6edf3cTb4b4b4) Tff7b72=Tff7b72>
Te6edf3cTb4b4b4.Te6edf3destination_hash Tff7b72=Tff7b72=Tff7b72= Te6edf3contactHash Tff7b72|Tff7b72|
Te6edf3cTb4b4b4.Te6edf3destination_hash Tff7b72=Tff7b72=Tff7b72= Te6edf3lxmfAddress Tff7b72|Tff7b72|
Te6edf3cTb4b4b4.Te6edf3destination_hash Tff7b72=Tff7b72=Tff7b72= Te6edf3lxstAddress
Tb4b4b4)Tb4b4b4;

Te6edf3itemsTb4b4b4.Te6edf3contact Tff7b72= Tb4b4b4{
Te6edf3nameTb4b4b4: Te6edf3contactMatchTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4,
Te6edf3hashTb4b4b4: Te6edf3contactHashTb4b4b4,
Te6edf3lxmf_addressTb4b4b4: Te6edf3lxmfAddressTb4b4b4,
Te6edf3lxst_addressTb4b4b4: Te6edf3lxstAddressTb4b4b4,
Te6edf3custom_imageTb4b4b4: Te6edf3existingTff7b72?Tb4b4b4.Te6edf3contact_imageTb4b4b4,
Te6edf3lxmf_user_iconTb4b4b4: Te6edf3existingTff7b72?Tb4b4b4.Te6edf3lxmf_user_iconTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}

T8b949e// Parse paper message link
Tff7b72const Te6edf3paperMatch Tff7b72= Te6edf3contentTb4b4b4.Te6edf3matchTb4b4b4(Tff7b72/Tb4b4b4(Te6edf3lxmTff7b72|Te6edf3lxmfTb4b4b4)Tff7b72:\Tff7b72/\Tff7b72/Tb4b4b4[Te6edf3aTff7b72-Te6edf3zATff7b72-Te6edf3Z0T79c0ff-9Tff7b72+Tff7b72/Tff7b72=Tb4b4b4.Te6edf3_Tff7b72-Tb4b4b4]Tff7b72+Tff7b72/Te6edf3iTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3paperMatchTb4b4b4) Tb4b4b4{
Te6edf3itemsTb4b4b4.Te6edf3paperMessage Tff7b72= Te6edf3paperMatchTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
T8b949e// if content is only the paper message, or it already contains the detected text,
T8b949e// we'll hide the raw content div to avoid double rendering.
Tff7b72const Te6edf3trimmedContent Tff7b72= Te6edf3contentTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3trimmedContent Tff7b72=Tff7b72=Tff7b72= Te6edf3itemsTb4b4b4.Te6edf3paperMessage Tff7b72|Tff7b72| Te6edf3trimmedContentTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"Ta5d6ffPaper Message detectedTa5d6ff"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3itemsTb4b4b4.Te6edf3isOnlyPaperMessage Tff7b72= Tffa657trueTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72return Te6edf3itemsTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3addContactTb4b4b4(Te6edf3nameTb4b4b4, Te6edf3hashTb4b4b4, Te6edf3lxmf_address Tff7b72= Te6edf3nullTb4b4b4, Te6edf3lxst_address Tff7b72= Te6edf3nullTb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
T8b949e// Check if contact already exists
Tff7b72const Te6edf3checkResponse Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3telephoneTff7b72/Te6edf3contactsTff7b72/Te6edf3checkTff7b72/Te6edf3$Tb4b4b4{Te6edf3hashTb4b4b4}`Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3checkResponseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Tffa657idTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(`Te6edf3$Tb4b4b4{Te6edf3nameTb4b4b4} Te6edf3is Te6edf3already Tff7b72in Te6edf3your Te6edf3contacts`Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"Ta5d6ff/api/v1/telephone/contactsTa5d6ff"Tb4b4b4, Tb4b4b4{
Te6edf3nameTb4b4b4: Te6edf3nameTb4b4b4,
Te6edf3remote_identity_hashTb4b4b4: Te6edf3hashTb4b4b4,
Te6edf3lxmf_addressTb4b4b4: Te6edf3lxmf_addressTb4b4b4,
Te6edf3lxst_addressTb4b4b4: Te6edf3lxst_addressTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(`Te6edf3Added Te6edf3$Tb4b4b4{Te6edf3nameTb4b4b4} Te6edf3to Te6edf3contacts`Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.failed_add_contactTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3ingestPaperMessageTb4b4b4(Te6edf3uriTb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4(
Te6edf3JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{
Te6edf3typeTb4b4b4: Ta5d6ff"Ta5d6fflxm.ingest_uriTa5d6ff"Tb4b4b4,
Te6edf3uriTb4b4b4: Te6edf3uriTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.ingesting_paper_messageTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.failed_ingest_paperTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3generatePaperMessageFromCompositionTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3canSendMessageTb4b4b4) Tff7b72returnTb4b4b4;

Te6edf3thisTb4b4b4.Te6edf3isGeneratingPaperMessage Tff7b72= Tffa657trueTb4b4b4;
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4(
Te6edf3JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{
Te6edf3typeTb4b4b4: Ta5d6ff"Ta5d6fflxm.generate_paper_uriTa5d6ff"Tb4b4b4,
Te6edf3destination_hashTb4b4b4: Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3contentTb4b4b4: Te6edf3thisTb4b4b4.Te6edf3newMessageTextTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3onWebsocketMessageTb4b4b4(Te6edf3messageTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3json Tff7b72= Te6edf3JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3messageTb4b4b4.Te6edf3dataTb4b4b4)Tb4b4b4;
Tff7b72switch Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3typeTb4b4b4) Tb4b4b4{
Tff7b72case Ta5d6ff"Ta5d6ffannounceTa5d6ff"Tb4b4b4: Tb4b4b4{
T8b949e// update stamp info and signal metrics if an announce is received from the selected peer
Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3announceTb4b4b4.Te6edf3destination_hash Tff7b72=Tff7b72=Tff7b72= Te6edf3thisTb4b4b4.Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3destination_hashTb4b4b4) Tb4b4b4{
Te6edf3await Te6edf3thisTb4b4b4.Te6edf3getPeerPathTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3await Te6edf3thisTb4b4b4.Te6edf3getPeerLxmfStampInfoTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3await Te6edf3thisTb4b4b4.Te6edf3getPeerSignalMetricsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4: Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3onLxmfMessageReceivedTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3lxmf_messageTb4b4b4)Tb4b4b4;
Te6edf3await Te6edf3thisTb4b4b4.Te6edf3getPeerPathTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3await Te6edf3thisTb4b4b4.Te6edf3getPeerSignalMetricsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"Ta5d6fflxmf_message_createdTa5d6ff"Tb4b4b4: Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3onLxmfMessageCreatedTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3lxmf_messageTb4b4b4)Tb4b4b4;
Te6edf3await Te6edf3thisTb4b4b4.Te6edf3getPeerPathTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"Ta5d6fflxmf_message_state_updatedTa5d6ff"Tb4b4b4: Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3onLxmfMessageUpdatedTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3lxmf_messageTb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"Ta5d6fflxmf_message_deletedTa5d6ff"Tb4b4b4: Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3onLxmfMessageDeletedTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3hashTb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"Ta5d6fflxm.generate_paper_uri.resultTa5d6ff"Tb4b4b4: Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3isGeneratingPaperMessage Tff7b72= Tffa657falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3status Tff7b72=Tff7b72=Tff7b72= Ta5d6ff"Ta5d6ffsuccessTa5d6ff"Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3generatedPaperMessageUri Tff7b72= Te6edf3jsonTb4b4b4.Te6edf3uriTb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3isPaperMessageResultModalOpen Tff7b72= Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3messageTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"Ta5d6fflxm.ingest_uri.resultTa5d6ff"Tb4b4b4: Tb4b4b4{
T8b949e// Handled in App.vue or MessagesPage.vue
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3openLXMFAddressTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3GlobalEmitterTb4b4b4.Te6edf3emitTb4b4b4(Ta5d6ff"Ta5d6ffcompose-new-messageTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onComposeNewMessageEventTb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3selectedPeer Tff7b72&Tff7b72& Tff7b72!Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Tff7b72const Te6edf3composeInput Tff7b72= Te6edf3documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff"Ta5d6ffcompose-inputTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3composeInputTb4b4b4) Tb4b4b4{
Te6edf3composeInputTb4b4b4.Te6edf3focusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3onComposeSubmitTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3composeAddress Tff7b72|Tff7b72| Te6edf3thisTb4b4b4.Te6edf3composeAddressTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72=Tff7b72=Tff7b72= Ta5d6ff"Ta5d6ff"Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3let Te6edf3destinationHash Tff7b72= Te6edf3thisTb4b4b4.Te6edf3composeAddressTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3composeAddress Tff7b72= Ta5d6ff"Ta5d6ff"Tb4b4b4;
Te6edf3await Te6edf3thisTb4b4b4.Te6edf3handleComposeAddressTb4b4b4(Te6edf3destinationHashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onComposeEnterPressedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(
Te6edf3thisTb4b4b4.Te6edf3selectedComposeSuggestionIndex Tff7b72>Tff7b72= T79c0ff0 Tff7b72&Tff7b72&
Te6edf3thisTb4b4b4.Te6edf3selectedComposeSuggestionIndex Tff7b72< Te6edf3thisTb4b4b4.Te6edf3composeSuggestionsTb4b4b4.Te6edf3length
Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3suggestion Tff7b72= Te6edf3thisTb4b4b4.Te6edf3composeSuggestionsTb4b4b4[Te6edf3thisTb4b4b4.Te6edf3selectedComposeSuggestionIndexTb4b4b4]Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3selectComposeSuggestionTb4b4b4(Te6edf3suggestionTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3onComposeSubmitTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3handleComposeInputUpTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3composeSuggestionsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3selectedComposeSuggestionIndex Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3selectedComposeSuggestionIndexTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3selectedComposeSuggestionIndex Tff7b72= Te6edf3thisTb4b4b4.Te6edf3composeSuggestionsTb4b4b4.Te6edf3length Tff7b72- T79c0ff1Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3handleComposeInputDownTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3composeSuggestionsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3selectedComposeSuggestionIndex Tff7b72< Te6edf3thisTb4b4b4.Te6edf3composeSuggestionsTb4b4b4.Te6edf3length Tff7b72- T79c0ff1Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3selectedComposeSuggestionIndexTff7b72+Tff7b72+Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3selectedComposeSuggestionIndex Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3selectComposeSuggestionTb4b4b4(Te6edf3suggestionTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3composeAddress Tff7b72= Te6edf3suggestionTb4b4b4.Te6edf3hashTb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3isComposeInputFocused Tff7b72= Tffa657falseTb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3selectedComposeSuggestionIndex Tff7b72= T79c0ff-1Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3onComposeSubmitTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onComposeInputBlurTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// Delay blur to allow mousedown on suggestions
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3isComposeInputFocused Tff7b72= Tffa657falseTb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3selectedComposeSuggestionIndex Tff7b72= T79c0ff-1Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff200Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3handleComposeAddressTb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3destinationHashTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"Ta5d6fflxmf@Ta5d6ff"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3destinationHash Tff7b72= Te6edf3destinationHashTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"Ta5d6fflxmf@Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3destinationHashTb4b4b4.Te6edf3length Tff7b72!Tff7b72=Tff7b72= T79c0ff32Tb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffcommon.invalid_addressTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3GlobalEmitterTb4b4b4.Te6edf3emitTb4b4b4(Ta5d6ff"Ta5d6ffcompose-new-messageTa5d6ff"Tb4b4b4, Te6edf3destinationHashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onLxmfMessageReceivedTb4b4b4(Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
T8b949e// only add if it's for the current conversation
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3source_hash Tff7b72!Tff7b72=Tff7b72= Te6edf3thisTb4b4b4.Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3destination_hashTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// add inbound message to ui
Te6edf3thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTb4b4b4: Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4,
Te6edf3lxmf_messageTb4b4b4: Te6edf3lxmfMessageTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// mark conversation as read
Tff7b72const Te6edf3conversation Tff7b72= Te6edf3thisTb4b4b4.Te6edf3findConversationTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3conversationTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3markConversationAsReadTb4b4b4(Te6edf3conversationTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// auto scroll to bottom if we want to
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3autoScrollOnNewMessageTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3scrollMessagesToBottomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// auto load audio
Te6edf3thisTb4b4b4.Te6edf3autoLoadAudioAttachmentsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onLxmfMessageCreatedTb4b4b4(Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
T8b949e// only add if it's for the current conversation
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3destination_hash Tff7b72!Tff7b72=Tff7b72= Te6edf3thisTb4b4b4.Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3destination_hashTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// add new outbound lxmf message from server
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3isLxmfMessageInUiTb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTb4b4b4: Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4,
Te6edf3lxmf_messageTb4b4b4: Te6edf3lxmfMessageTb4b4b4,
Te6edf3is_outboundTb4b4b4: Tffa657trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// auto load audio
Te6edf3thisTb4b4b4.Te6edf3autoLoadAudioAttachmentsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onLxmfMessageUpdatedTb4b4b4(Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
T8b949e// find existing chat item by lxmf message hash
Tff7b72const Te6edf3lxmfMessageHash Tff7b72= Te6edf3lxmfMessageTb4b4b4.Te6edf3hashTb4b4b4;
Tff7b72const Te6edf3chatItemIndex Tff7b72= Te6edf3thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3findIndexTb4b4b4(
Tb4b4b4(Te6edf3chatItemTb4b4b4) Tff7b72=Tff7b72> Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3hash Tff7b72=Tff7b72=Tff7b72= Te6edf3lxmfMessageHash
Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3chatItemIndex Tff7b72=Tff7b72=Tff7b72= T79c0ff-1Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// update lxmf message from server, while ensuring ui updates from nested object change
Te6edf3thisTb4b4b4.Te6edf3chatItemsTb4b4b4[Te6edf3chatItemIndexTb4b4b4]Tb4b4b4.Te6edf3lxmf_message Tff7b72= Te6edf3lxmfMessageTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onLxmfMessageDeletedTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
T8b949e// remove existing chat item by lxmf message hash
Te6edf3thisTb4b4b4.Te6edf3chatItems Tff7b72= Te6edf3thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3itemTb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Tff7b72return Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3hash Tff7b72!Tff7b72=Tff7b72= Te6edf3hashTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3getPeerPathTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
T8b949e// get path to destination
Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(
`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3destinationTff7b72/Te6edf3$Tb4b4b4{Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4}Tff7b72/Te6edf3path`
Tb4b4b4)Tb4b4b4;

T8b949e// update ui
Te6edf3thisTb4b4b4.Te6edf3selectedPeerPath Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3pathTb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;

T8b949e// clear previous known path
Te6edf3thisTb4b4b4.Te6edf3selectedPeerPath Tff7b72= Te6edf3nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3getPeerLxmfStampInfoTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
T8b949e// get lxmf stamp info
Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(
`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3destinationTff7b72/Te6edf3$Tb4b4b4{Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4}Tff7b72/Te6edf3lxmfTff7b72-Te6edf3stampTff7b72-Te6edf3info`
Tb4b4b4)Tb4b4b4;

T8b949e// update ui
Te6edf3thisTb4b4b4.Te6edf3selectedPeerLxmfStampInfo Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_stamp_infoTb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;

T8b949e// clear previous stamp info
Te6edf3thisTb4b4b4.Te6edf3selectedPeerLxmfStampInfo Tff7b72= Te6edf3nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3getPeerSignalMetricsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
T8b949e// get signal metrics
Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(
`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3destinationTff7b72/Te6edf3$Tb4b4b4{Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4}Tff7b72/Te6edf3signalTff7b72-Te6edf3metrics`
Tb4b4b4)Tb4b4b4;

T8b949e// update ui
Te6edf3thisTb4b4b4.Te6edf3selectedPeerSignalMetrics Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3signal_metricsTb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;

T8b949e// clear previous signal metrics
Te6edf3thisTb4b4b4.Te6edf3selectedPeerSignalMetrics Tff7b72= Te6edf3nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onDestinationPathClickTb4b4b4(Te6edf3pathTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(`Te6edf3$Tb4b4b4{Te6edf3pathTb4b4b4.Te6edf3hopsTb4b4b4} Te6edf3$Tb4b4b4{Te6edf3pathTb4b4b4.Te6edf3hops Tff7b72=Tff7b72=Tff7b72= T79c0ff1 Tff7b72? Ta5d6ff"Ta5d6ffhopTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffhopsTa5d6ff"Tb4b4b4} Te6edf3away Te6edf3via Te6edf3$Tb4b4b4{Te6edf3pathTb4b4b4.Te6edf3next_hop_interfaceTb4b4b4}`Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onStampInfoClickTb4b4b4(Te6edf3stampInfoTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3stampCost Tff7b72= Te6edf3stampInfoTb4b4b4.Te6edf3stamp_costTb4b4b4;
Tff7b72const Te6edf3outboundTicketExpiry Tff7b72= Te6edf3stampInfoTb4b4b4.Te6edf3outbound_ticket_expiryTb4b4b4;

T8b949e// determine estimated time to generate a stamp
Te6edf3var Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"Ta5d6ff"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3stampCost Tff7b72>Tff7b72= T79c0ff24Tb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"Ta5d6ffseveral hoursTa5d6ff"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3stampCost Tff7b72>Tff7b72= T79c0ff20Tb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"Ta5d6ffmore than an hourTa5d6ff"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3stampCost Tff7b72>Tff7b72= T79c0ff18Tb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"Ta5d6ff~5 minutesTa5d6ff"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3stampCost Tff7b72>Tff7b72= T79c0ff17Tb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"Ta5d6ffa few minutesTa5d6ff"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3stampCost Tff7b72>Tff7b72= T79c0ff16Tb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"Ta5d6ff~1 minuteTa5d6ff"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3stampCost Tff7b72>Tff7b72= T79c0ff13Tb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"Ta5d6ff~30 secondsTa5d6ff"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3stampCost Tff7b72>Tff7b72= T79c0ff9Tb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"Ta5d6ff~10 secondsTa5d6ff"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3stampCost Tff7b72>Tff7b72= T79c0ff1Tb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"Ta5d6ffa few secondsTa5d6ff"Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"Ta5d6ff0 secondsTa5d6ff"Tb4b4b4;
Tb4b4b4}

T8b949e// check if we have an outbound ticket available
Tff7b72if Tb4b4b4(Te6edf3outboundTicketExpiry Tff7b72!Tff7b72= Te6edf3nullTb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= `Te6edf3instant Tb4b4b4(Te6edf3ticket Te6edf3expires Te6edf3$Tb4b4b4{Te6edf3dayjsTb4b4b4(Te6edf3outboundTicketExpiry Tff7b72* T79c0ff1000Tb4b4b4)Tb4b4b4.Te6edf3fromNowTb4b4b4(Tb4b4b4)Tb4b4b4}Tb4b4b4)`Tb4b4b4;
Tb4b4b4}

Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(
`Te6edf3This Te6edf3peer Te6edf3has Te6edf3enabled Te6edf3stamp Te6edf3securityTb4b4b4.\Te6edf3n\Te6edf3nYour Te6edf3device Te6edf3must Te6edf3have Te6edf3a Te6edf3ticketTb4b4b4, Te6edf3or Te6edf3solve Te6edf3an Te6edf3automated Te6edf3proof Te6edf3of Te6edf3work Te6edf3task Te6edf3each Te6edf3time Te6edf3you Te6edf3send Te6edf3them Te6edf3a Te6edf3messageTb4b4b4.\Te6edf3n\Te6edf3nTime Te6edf3per Te6edf3messageTff7b72: Te6edf3$Tb4b4b4{Te6edf3estimatedTimeForStampTb4b4b4}`
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onSignalMetricsClickTb4b4b4(Te6edf3signalMetricsTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(
Tb4b4b4[
`Te6edf3Signal Te6edf3QualityTff7b72: Te6edf3$Tb4b4b4{Te6edf3signalMetricsTb4b4b4.Te6edf3quality Tff7b72?Tff7b72? Ta5d6ff"Ta5d6ff???Ta5d6ff"Tb4b4b4}Tff7b72%`Tb4b4b4,
`Te6edf3RSSITff7b72: Te6edf3$Tb4b4b4{Te6edf3signalMetricsTb4b4b4.Te6edf3rssi Tff7b72?Tff7b72? Ta5d6ff"Ta5d6ff???Ta5d6ff"Tb4b4b4}Te6edf3dBm`Tb4b4b4,
`Te6edf3SNRTff7b72: Te6edf3$Tb4b4b4{Te6edf3signalMetricsTb4b4b4.Te6edf3snr Tff7b72?Tff7b72? Ta5d6ff"Ta5d6ff???Ta5d6ff"Tb4b4b4}Te6edf3dB`Tb4b4b4,
Tb4b4b4]Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff"Tffea00\nTa5d6ff"Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3scrollMessagesToBottomTb4b4b4: Te6edf3function Tb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// next tick waits for the ui to have the new elements added
Te6edf3thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
T8b949e// set timeout with zero millis seems to fix issue where it doesn't scroll all the way to the bottom...
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Tff7b72const Te6edf3container Tff7b72= Te6edf3documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff"Ta5d6ffmessagesTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3containerTb4b4b4) Tb4b4b4{
Te6edf3containerTb4b4b4.Te6edf3scrollTop Tff7b72= Te6edf3containerTb4b4b4.Te6edf3scrollHeightTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isLxmfMessageInUiTb4b4b4: Te6edf3function Tb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3findIndexTb4b4b4(Tb4b4b4(Te6edf3chatItemTb4b4b4) Tff7b72=Tff7b72> Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3hash Tff7b72=Tff7b72=Tff7b72= Te6edf3hashTb4b4b4) Tff7b72!Tff7b72=Tff7b72= T79c0ff-1Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3getCustomDisplayNameTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
T8b949e// get custom display name
Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(
`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3destinationTff7b72/Te6edf3$Tb4b4b4{Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4}Tff7b72/Te6edf3customTff7b72-Te6edf3displayTff7b72-Te6edf3name`
Tb4b4b4)Tb4b4b4;

T8b949e// update ui
Te6edf3thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"Ta5d6ffupdate:selectedPeerTa5d6ff"Tb4b4b4, Tb4b4b4{
Tb4b4b4.Tb4b4b4.Tb4b4b4.Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4,
Te6edf3custom_display_nameTb4b4b4: Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3custom_display_nameTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3errorTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3updateCustomDisplayNameTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// do nothing if no peer selected
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// ask user for new display name
Tff7b72const Te6edf3displayName Tff7b72= Te6edf3await Te6edf3DialogUtilsTb4b4b4.Te6edf3promptTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.enter_display_nameTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3displayName Tff7b72=Tff7b72= Te6edf3nullTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

Te6edf3try Tb4b4b4{
T8b949e// update display name on server
Te6edf3await Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(
`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3destinationTff7b72/Te6edf3$Tb4b4b4{Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4}Tff7b72/Te6edf3customTff7b72-Te6edf3displayTff7b72-Te6edf3nameTff7b72/Te6edf3update`Tb4b4b4,
Tb4b4b4{
Te6edf3display_nameTb4b4b4: Te6edf3displayNameTb4b4b4,
Tb4b4b4}
Tb4b4b4)Tb4b4b4;

T8b949e// update display name in ui
Te6edf3await Te6edf3thisTb4b4b4.Te6edf3getCustomDisplayNameTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// reload conversations (so conversations list updates name)
Te6edf3thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"Ta5d6ffreload-conversationsTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3errorTb4b4b4)Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.failed_update_display_nameTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3onConversationDeletedTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// reload conversation
Te6edf3await Te6edf3thisTb4b4b4.Te6edf3initialLoadTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// reload conversations
Te6edf3thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"Ta5d6ffreload-conversationsTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onChatItemClickTb4b4b4: Te6edf3function Tb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTb4b4b4.Te6edf3is_actions_expandedTb4b4b4) Tb4b4b4{
Te6edf3chatItemTb4b4b4.Te6edf3is_actions_expanded Tff7b72= Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3chatItemTb4b4b4.Te6edf3is_actions_expanded Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3showRawMessageTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
T8b949e// we'll try to get the URI first as it contains the raw signed message
Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3lxmfTff7b72-Te6edf3messagesTff7b72/Te6edf3$Tb4b4b4{Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4}Tff7b72/Te6edf3uri`Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3rawMessageData Tff7b72= Tb4b4b4{
Tb4b4b4.Tb4b4b4.Tb4b4b4.Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4,
Te6edf3raw_uriTb4b4b4: Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3uriTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4{
T8b949e// if URI is not available (message no longer in router), we show what we have
Te6edf3thisTb4b4b4.Te6edf3rawMessageData Tff7b72= Tb4b4b4{ Tb4b4b4.Tb4b4b4.Tb4b4b4.Te6edf3chatItemTb4b4b4.Te6edf3lxmf_message Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Te6edf3thisTb4b4b4.Te6edf3isRawMessageModalOpen Tff7b72= Tffa657trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3downloadAndDecodeAudioTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3isDownloadingAudioTb4b4b4[Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4]Tb4b4b4) Tff7b72returnTb4b4b4;

Te6edf3thisTb4b4b4.Te6edf3isDownloadingAudioTb4b4b4[Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4] Tff7b72= Tffa657trueTb4b4b4;
Te6edf3try Tb4b4b4{
T8b949e// fetch audio bytes from api
Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(
`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3lxmfTff7b72-Te6edf3messagesTff7b72/Te6edf3attachmentTff7b72/Te6edf3$Tb4b4b4{Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4}Tff7b72/Te6edf3audio`Tb4b4b4,
Tb4b4b4{
Te6edf3responseTypeTb4b4b4: Ta5d6ff"Ta5d6ffarraybufferTa5d6ff"Tb4b4b4,
Tb4b4b4}
Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3audioBytes Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4; T8b949e// this will be an ArrayBuffer

T8b949e// ensure we have the bytes
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3audioBytesTb4b4b4) Tb4b4b4{
Te6edf3throw Te6edf3new Te6edf3ErrorTb4b4b4(Ta5d6ff"Ta5d6ffNo audio bytes receivedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// decode audio to blob url
T8b949e// note: decodeLxmfAudioFieldToBlobUrl expects a field object with audio_mode and audio_bytes
Tff7b72const Te6edf3audioField Tff7b72= Tb4b4b4{
Te6edf3audio_modeTb4b4b4: Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3audioTb4b4b4.Te6edf3audio_modeTb4b4b4,
Te6edf3audio_bytesTb4b4b4: Te6edf3audioBytesTb4b4b4,
Tb4b4b4}Tb4b4b4;

Tff7b72const Te6edf3objectUrl Tff7b72= Te6edf3await Te6edf3thisTb4b4b4.Te6edf3decodeLxmfAudioFieldToBlobUrlTb4b4b4(Te6edf3audioFieldTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3objectUrlTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3lxmfMessageAudioAttachmentCacheTb4b4b4[Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4] Tff7b72= Te6edf3objectUrlTb4b4b4;
Tb4b4b4}
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Ta5d6ffFailed to download or decode audio:Ta5d6ff"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.failed_load_audioTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3finally Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3isDownloadingAudioTb4b4b4[Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4] Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3autoLoadAudioAttachmentsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3chatItem Te6edf3of Te6edf3thisTb4b4b4.Te6edf3chatItemsTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3audio Tff7b72&Tff7b72&
Tff7b72!Te6edf3thisTb4b4b4.Te6edf3lxmfMessageAudioAttachmentCacheTb4b4b4[Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4] Tff7b72&Tff7b72&
Tff7b72!Te6edf3thisTb4b4b4.Te6edf3isDownloadingAudioTb4b4b4[Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4]
Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3downloadAndDecodeAudioTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3formatAttachmentSizeTb4b4b4(Te6edf3attachmentTb4b4b4, Te6edf3typeTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3attachmentTb4b4b4[`Te6edf3$Tb4b4b4{Te6edf3typeTb4b4b4}Te6edf3_size`Tb4b4b4] Tff7b72!Tff7b72=Tff7b72= Te6edf3undefined Tff7b72&Tff7b72& Te6edf3attachmentTb4b4b4[`Te6edf3$Tb4b4b4{Te6edf3typeTb4b4b4}Te6edf3_size`Tb4b4b4] Tff7b72!Tff7b72=Tff7b72= Te6edf3nullTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3thisTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3attachmentTb4b4b4[`Te6edf3$Tb4b4b4{Te6edf3typeTb4b4b4}Te6edf3_size`Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3attachmentTb4b4b4[`Te6edf3$Tb4b4b4{Te6edf3typeTb4b4b4}Te6edf3_bytes`Tb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3thisTb4b4b4.Te6edf3formatBase64BytesTb4b4b4(Te6edf3attachmentTb4b4b4[`Te6edf3$Tb4b4b4{Te6edf3typeTb4b4b4}Te6edf3_bytes`Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"Ta5d6ff0 BTa5d6ff"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openImageTb4b4b4: Te6edf3async Te6edf3function Tb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3imageModalUrl Tff7b72= Te6edf3urlTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3closeImageModalTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3imageModalUrl Tff7b72= Te6edf3nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3downloadFileFromBase64Tb4b4b4: Te6edf3async Te6edf3function Tb4b4b4(Te6edf3fileNameTb4b4b4, Te6edf3fileBytesBase64Tb4b4b4) Tb4b4b4{
T8b949e// create blob from base64 encoded file bytes
Tff7b72const Te6edf3byteCharacters Tff7b72= Te6edf3atobTb4b4b4(Te6edf3fileBytesBase64Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3byteNumbers Tff7b72= Te6edf3new Te6edf3ArrayTb4b4b4(Te6edf3byteCharactersTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Te6edf3let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3byteCharactersTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Te6edf3byteNumbersTb4b4b4[Te6edf3iTb4b4b4] Tff7b72= Te6edf3byteCharactersTb4b4b4.Te6edf3charCodeAtTb4b4b4(Te6edf3iTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3byteArray Tff7b72= Te6edf3new Te6edf3Uint8ArrayTb4b4b4(Te6edf3byteNumbersTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3blob Tff7b72= Te6edf3new Te6edf3BlobTb4b4b4(Tb4b4b4[Te6edf3byteArrayTb4b4b4]Tb4b4b4)Tb4b4b4;

T8b949e// create object url for blob
Tff7b72const Te6edf3objectUrl Tff7b72= Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;

T8b949e// create link element to download blob
Tff7b72const Te6edf3link Tff7b72= Te6edf3documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"Ta5d6ffaTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3href Tff7b72= Te6edf3objectUrlTb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3download Tff7b72= Te6edf3fileNameTb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3display Tff7b72= Ta5d6ff"Ta5d6ffnoneTa5d6ff"Tb4b4b4;
Te6edf3documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3appendTb4b4b4(Te6edf3linkTb4b4b4)Tb4b4b4;

T8b949e// click link to download file in browser
Te6edf3linkTb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// link element is no longer needed
Te6edf3linkTb4b4b4.Te6edf3removeTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// revoke object url to clear memory
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tff7b72=Tff7b72> Te6edf3URLTb4b4b4.Te6edf3revokeObjectURLTb4b4b4(Te6edf3objectUrlTb4b4b4)Tb4b4b4, T79c0ff10000Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3processAudioForSelectedPeerChatItemsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3chatItem Te6edf3of Te6edf3thisTb4b4b4.Te6edf3selectedPeerChatItemsTb4b4b4) Tb4b4b4{
T8b949e// skip if no audio, or if audio bytes are missing (must be downloaded manually)
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3audio Tff7b72|Tff7b72| Tff7b72!Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3audioTb4b4b4.Te6edf3audio_bytesTb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}

T8b949e// skip if audio already cached
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3lxmfMessageAudioAttachmentCacheTb4b4b4[Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}

T8b949e// decode audio to blob url
Tff7b72const Te6edf3objectUrl Tff7b72= Te6edf3await Te6edf3thisTb4b4b4.Te6edf3decodeLxmfAudioFieldToBlobUrlTb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3audioTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3objectUrlTb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}

T8b949e// update audio cache
Te6edf3thisTb4b4b4.Te6edf3lxmfMessageAudioAttachmentCacheTb4b4b4[Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4] Tff7b72= Te6edf3objectUrlTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3decodeLxmfAudioFieldToBlobUrlTb4b4b4(Te6edf3audioFieldTb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
T8b949e// get audio mode and audio bytes from audio field
Tff7b72const Te6edf3audioMode Tff7b72= Te6edf3audioFieldTb4b4b4.Te6edf3audio_modeTb4b4b4;
Tff7b72const Te6edf3audioBytes Tff7b72= Te6edf3audioFieldTb4b4b4.Te6edf3audio_bytesTb4b4b4;

T8b949e// handle opus: AM_OPUS_OGG
Tff7b72if Tb4b4b4(Te6edf3audioMode Tff7b72=Tff7b72=Tff7b72= T79c0ff0x10Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3thisTb4b4b4.Te6edf3decodeOpusAudioToBlobUrlTb4b4b4(Te6edf3audioFieldTb4b4b4.Te6edf3audio_bytesTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// determine codec2 mode, or skip if unknown
Tff7b72const Te6edf3codecMode Tff7b72= Te6edf3thisTb4b4b4.Te6edf3lxmfAudioModeToCodec2ModeMapTb4b4b4[Te6edf3audioModeTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3codecModeTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"Ta5d6ffunsupported audio mode: Ta5d6ff" Tff7b72+ Te6edf3audioModeTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3nullTb4b4b4;
Tb4b4b4}

T8b949e// convert to uint8 array
Te6edf3let Te6edf3encodedTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3audioBytes Tff7b72=Tff7b72=Tff7b72= Ta5d6ff"Ta5d6ffstringTa5d6ff"Tb4b4b4) Tb4b4b4{
Te6edf3encoded Tff7b72= Te6edf3thisTb4b4b4.Te6edf3base64ToArrayBufferTb4b4b4(Te6edf3audioBytesTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3encoded Tff7b72= Te6edf3new Te6edf3Uint8ArrayTb4b4b4(Te6edf3audioBytesTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// decode codec2 audio
Tff7b72const Te6edf3decoded Tff7b72= Te6edf3await Te6edf3Codec2LibTb4b4b4.Te6edf3runDecodeTb4b4b4(Te6edf3codecModeTb4b4b4, Te6edf3encodedTb4b4b4)Tb4b4b4;

T8b949e// convert decoded codec2 to wav audio
Tff7b72const Te6edf3wavAudio Tff7b72= Te6edf3await Te6edf3Codec2LibTb4b4b4.Te6edf3rawToWavTb4b4b4(Te6edf3decodedTb4b4b4)Tb4b4b4;

T8b949e// create blob from wav audio
Tff7b72const Te6edf3blob Tff7b72= Te6edf3new Te6edf3BlobTb4b4b4(Tb4b4b4[Te6edf3wavAudioTb4b4b4]Tb4b4b4, Tb4b4b4{
Te6edf3typeTb4b4b4: Ta5d6ff"Ta5d6ffaudio/wavTa5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// create object url for blob
Tff7b72return Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
T8b949e// failed to decode lxmf audio field
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3decodeOpusAudioToBlobUrlTb4b4b4(Te6edf3audioBytesTb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
T8b949e// convert to uint8 array
Te6edf3let Te6edf3opusAudioBytesTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3audioBytes Tff7b72=Tff7b72=Tff7b72= Ta5d6ff"Ta5d6ffstringTa5d6ff"Tb4b4b4) Tb4b4b4{
Te6edf3opusAudioBytes Tff7b72= Te6edf3thisTb4b4b4.Te6edf3base64ToArrayBufferTb4b4b4(Te6edf3audioBytesTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3opusAudioBytes Tff7b72= Te6edf3new Te6edf3Uint8ArrayTb4b4b4(Te6edf3audioBytesTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// create blob from opus audio
Tff7b72const Te6edf3blob Tff7b72= Te6edf3new Te6edf3BlobTb4b4b4(Tb4b4b4[Te6edf3opusAudioBytesTb4b4b4]Tb4b4b4, Tb4b4b4{
Te6edf3typeTb4b4b4: Ta5d6ff"Ta5d6ffaudio/opusTa5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// create object url for blob
Tff7b72return Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
T8b949e// failed to decode opus audio
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3base64ToArrayBufferTb4b4b4: Te6edf3function Tb4b4b4(Te6edf3base64Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3Uint8ArrayTb4b4b4.Te6edf3fromTb4b4b4(Te6edf3atobTb4b4b4(Te6edf3base64Tb4b4b4)Tb4b4b4, Tb4b4b4(Te6edf3cTb4b4b4) Tff7b72=Tff7b72> Te6edf3cTb4b4b4.Te6edf3charCodeAtTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3deleteChatItemTb4b4b4(Te6edf3chatItemTb4b4b4, Te6edf3shouldConfirm Tff7b72= Tffa657trueTb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
T8b949e// ask user to confirm deleting message
Tff7b72if Tb4b4b4(
Te6edf3shouldConfirm Tff7b72&Tff7b72&
Tff7b72!Tb4b4b4(Te6edf3await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(
Ta5d6ff"Ta5d6ffAre you sure you want to delete this message? This can not be undone!Ta5d6ff"
Tb4b4b4)Tb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// make sure it's an lxmf message
Tff7b72if Tb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3type Tff7b72!Tff7b72=Tff7b72= Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// delete lxmf message from server
Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3deleteTb4b4b4(`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3lxmfTff7b72-Te6edf3messagesTff7b72/Te6edf3$Tb4b4b4{Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4}`Tb4b4b4)Tb4b4b4;

T8b949e// remove lxmf message from chat items using hash, as other pending items might not have an id yet
Te6edf3thisTb4b4b4.Te6edf3chatItems Tff7b72= Te6edf3thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3itemTb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Tff7b72return Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3hash Tff7b72!Tff7b72=Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4{
T8b949e// do nothing if failed to delete message
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3openShareContactModalTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"Ta5d6ff/api/v1/telephone/contactsTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3contacts Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3contactsTb4b4b4.Te6edf3length Tff7b72=Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.no_contacts_telephoneTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Te6edf3thisTb4b4b4.Te6edf3isShareContactModalOpen Tff7b72= Tffa657trueTb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.failed_load_contactsTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3shareContactTb4b4b4(Te6edf3contactTb4b4b4) Tb4b4b4{
Te6edf3let Te6edf3sharedString Tff7b72= `Te6edf3ContactTff7b72: Te6edf3$Tb4b4b4{Te6edf3contactTb4b4b4.Te6edf3nameTb4b4b4} Tff7b72<Te6edf3$Tb4b4b4{Te6edf3contactTb4b4b4.Te6edf3remote_identity_hashTb4b4b4}Tff7b72>`Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3contactTb4b4b4.Te6edf3lxmf_addressTb4b4b4) Te6edf3sharedString Tff7b72+Tff7b72= ` Tb4b4b4[Te6edf3LXMFTff7b72: Te6edf3$Tb4b4b4{Te6edf3contactTb4b4b4.Te6edf3lxmf_addressTb4b4b4}Tb4b4b4]`Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3contactTb4b4b4.Te6edf3lxst_addressTb4b4b4) Te6edf3sharedString Tff7b72+Tff7b72= ` Tb4b4b4[Te6edf3LXSTTff7b72: Te6edf3$Tb4b4b4{Te6edf3contactTb4b4b4.Te6edf3lxst_addressTb4b4b4}Tb4b4b4]`Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3newMessageText Tff7b72= Te6edf3sharedStringTb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3isShareContactModalOpen Tff7b72= Tffa657falseTb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3sendMessageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3shareAsPaperMessageTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3paperMessageHash Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3isPaperMessageModalOpen Tff7b72= Tffa657trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3sendMessageTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// do nothing if can't send message
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3canSendMessageTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// do nothing if no peer selected
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

Te6edf3thisTb4b4b4.Te6edf3isSendingMessage Tff7b72= Tffa657trueTb4b4b4;

Te6edf3try Tb4b4b4{
T8b949e// build fields
Tff7b72const Te6edf3fields Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;

T8b949e// add telemetry if present
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3newMessageTelemetryTb4b4b4) Tb4b4b4{
Te6edf3fieldsTb4b4b4[Ta5d6ff"Ta5d6fftelemetryTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3thisTb4b4b4.Te6edf3newMessageTelemetryTb4b4b4;
Tb4b4b4}

T8b949e// add file attachments
Te6edf3var Te6edf3fileAttachmentsTotalSize Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3newMessageFilesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3fileAttachments Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3file Te6edf3of Te6edf3thisTb4b4b4.Te6edf3newMessageFilesTb4b4b4) Tb4b4b4{
Te6edf3fileAttachmentsTotalSize Tff7b72+Tff7b72= Te6edf3fileTb4b4b4.Te6edf3sizeTb4b4b4;
Te6edf3fileAttachmentsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3file_nameTb4b4b4: Te6edf3fileTb4b4b4.Te6edf3nameTb4b4b4,
Te6edf3file_sizeTb4b4b4: Te6edf3fileTb4b4b4.Te6edf3sizeTb4b4b4,
Te6edf3file_bytesTb4b4b4: Te6edf3UtilsTb4b4b4.Te6edf3arrayBufferToBase64Tb4b4b4(Te6edf3await Te6edf3fileTb4b4b4.Te6edf3arrayBufferTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3fieldsTb4b4b4[Ta5d6ff"Ta5d6fffile_attachmentsTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3fileAttachmentsTb4b4b4;
Tb4b4b4}

T8b949e// add image attachment
Te6edf3var Te6edf3imageTotalSize Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3var Te6edf3images Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3newMessageImagesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3image Te6edf3of Te6edf3thisTb4b4b4.Te6edf3newMessageImagesTb4b4b4) Tb4b4b4{
Te6edf3imageTotalSize Tff7b72+Tff7b72= Te6edf3imageTb4b4b4.Te6edf3sizeTb4b4b4;
Te6edf3imagesTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3image_typeTb4b4b4: Te6edf3imageTb4b4b4.Te6edf3typeTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"Ta5d6ffimage/Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3image_sizeTb4b4b4: Te6edf3imageTb4b4b4.Te6edf3sizeTb4b4b4,
Te6edf3image_bytesTb4b4b4: Te6edf3UtilsTb4b4b4.Te6edf3arrayBufferToBase64Tb4b4b4(Te6edf3await Te6edf3imageTb4b4b4.Te6edf3arrayBufferTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3nameTb4b4b4: Te6edf3imageTb4b4b4.Te6edf3nameTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

T8b949e// add audio attachment
Te6edf3var Te6edf3audioTotalSize Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3newMessageAudioTb4b4b4) Tb4b4b4{
Te6edf3audioTotalSize Tff7b72= Te6edf3thisTb4b4b4.Te6edf3newMessageAudioTb4b4b4.Te6edf3sizeTb4b4b4;
Te6edf3fieldsTb4b4b4[Ta5d6ff"Ta5d6ffaudioTa5d6ff"Tb4b4b4] Tff7b72= Tb4b4b4{
Te6edf3audio_modeTb4b4b4: Te6edf3thisTb4b4b4.Te6edf3newMessageAudioTb4b4b4.Te6edf3audio_modeTb4b4b4,
Te6edf3audio_sizeTb4b4b4: Te6edf3thisTb4b4b4.Te6edf3newMessageAudioTb4b4b4.Te6edf3sizeTb4b4b4,
Te6edf3audio_bytesTb4b4b4: Te6edf3UtilsTb4b4b4.Te6edf3arrayBufferToBase64Tb4b4b4(Te6edf3await Te6edf3thisTb4b4b4.Te6edf3newMessageAudioTb4b4b4.Te6edf3audio_blobTb4b4b4.Te6edf3arrayBufferTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}

T8b949e// calculate estimated message size in bytes
Tff7b72const Te6edf3contentSize Tff7b72= Te6edf3thisTb4b4b4.Te6edf3newMessageTextTb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72const Te6edf3totalMessageSize Tff7b72= Te6edf3contentSize Tff7b72+ Te6edf3fileAttachmentsTotalSize Tff7b72+ Te6edf3imageTotalSize Tff7b72+ Te6edf3audioTotalSizeTb4b4b4;

T8b949e// ask user if they still want to send message if it may be rejected by sender
Tff7b72if Tb4b4b4(Te6edf3totalMessageSize Tff7b72> T79c0ff1000 Tff7b72* T79c0ff900Tb4b4b4) Tb4b4b4{
T8b949e// actual limit in LXMF Router is 1mb
Tff7b72if Tb4b4b4(
Tff7b72!Tb4b4b4(Te6edf3await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(
`Te6edf3Your Te6edf3message Te6edf3exceeds T79c0ff900Te6edf3KB Tb4b4b4(Te6edf3It'Te6edf3s Te6edf3$Tb4b4b4{Te6edf3thisTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3totalMessageSizeTb4b4b4)Tb4b4b4}Tb4b4b4)Tb4b4b4. Te6edf3It Te6edf3may Te6edf3be Te6edf3rejected Te6edf3by Te6edf3the Te6edf3recipient Te6edf3unless Te6edf3they Te6edf3have Te6edf3increased Te6edf3their Te6edf3delivery Te6edf3limitTb4b4b4. Te6edf3Do Te6edf3you Te6edf3want Te6edf3to Te6edf3try Te6edf3sending Te6edf3anywayTff7b72?`
Tb4b4b4)Tb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}

T8b949e// if no images, send message as usual
Tff7b72if Tb4b4b4(Te6edf3imagesTb4b4b4.Te6edf3length Tff7b72=Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3lxmfTff7b72-Te6edf3messagesTff7b72/Te6edf3send`Tb4b4b4, Tb4b4b4{
Te6edf3delivery_methodTb4b4b4: Te6edf3thisTb4b4b4.Te6edf3newMessageDeliveryMethodTb4b4b4,
Te6edf3lxmf_messageTb4b4b4: Tb4b4b4{
Te6edf3destination_hashTb4b4b4: Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3contentTb4b4b4: Te6edf3thisTb4b4b4.Te6edf3newMessageTextTb4b4b4,
Te6edf3fieldsTb4b4b4: Te6edf3fieldsTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// add outbound message to ui
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3isLxmfMessageInUiTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTb4b4b4: Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4,
Te6edf3lxmf_messageTb4b4b4: Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4,
Te6edf3is_outboundTb4b4b4: Tffa657trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
T8b949e// send first image with message text and other fields
Tff7b72const Te6edf3firstImage Tff7b72= Te6edf3imagesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3firstFields Tff7b72= Tb4b4b4{
Tb4b4b4.Tb4b4b4.Tb4b4b4.Te6edf3fieldsTb4b4b4,
Te6edf3imageTb4b4b4: Tb4b4b4{ Te6edf3image_typeTff7b72: Te6edf3firstImageTb4b4b4.Te6edf3image_typeTb4b4b4, Te6edf3image_bytesTff7b72: Te6edf3firstImageTb4b4b4.Te6edf3image_bytes Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;

Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3lxmfTff7b72-Te6edf3messagesTff7b72/Te6edf3send`Tb4b4b4, Tb4b4b4{
Te6edf3delivery_methodTb4b4b4: Te6edf3thisTb4b4b4.Te6edf3newMessageDeliveryMethodTb4b4b4,
Te6edf3lxmf_messageTb4b4b4: Tb4b4b4{
Te6edf3destination_hashTb4b4b4: Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3contentTb4b4b4: Te6edf3thisTb4b4b4.Te6edf3newMessageTextTb4b4b4,
Te6edf3fieldsTb4b4b4: Te6edf3firstFieldsTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// add outbound message to ui
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3isLxmfMessageInUiTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTb4b4b4: Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4,
Te6edf3lxmf_messageTb4b4b4: Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4,
Te6edf3is_outboundTb4b4b4: Tffa657trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// send subsequent images as separate messages with image name as content
Tff7b72for Tb4b4b4(Te6edf3let Te6edf3i Tff7b72= T79c0ff1Tb4b4b4; Te6edf3i Tff7b72< Te6edf3imagesTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3image Tff7b72= Te6edf3imagesTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3subsequentFields Tff7b72= Tb4b4b4{
Te6edf3imageTb4b4b4: Tb4b4b4{ Te6edf3image_typeTff7b72: Te6edf3imageTb4b4b4.Te6edf3image_typeTb4b4b4, Te6edf3image_bytesTff7b72: Te6edf3imageTb4b4b4.Te6edf3image_bytes Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;

Te6edf3try Tb4b4b4{
Tff7b72const Te6edf3subResponse Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3lxmfTff7b72-Te6edf3messagesTff7b72/Te6edf3send`Tb4b4b4, Tb4b4b4{
Te6edf3delivery_methodTb4b4b4: Te6edf3thisTb4b4b4.Te6edf3newMessageDeliveryMethodTb4b4b4,
Te6edf3lxmf_messageTb4b4b4: Tb4b4b4{
Te6edf3destination_hashTb4b4b4: Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3contentTb4b4b4: Te6edf3imageTb4b4b4.Te6edf3nameTb4b4b4,
Te6edf3fieldsTb4b4b4: Te6edf3subsequentFieldsTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// add outbound message to ui
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3isLxmfMessageInUiTb4b4b4(Te6edf3subResponseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTb4b4b4: Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4,
Te6edf3lxmf_messageTb4b4b4: Te6edf3subResponseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4,
Te6edf3is_outboundTb4b4b4: Tffa657trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3subErrorTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(`Te6edf3Failed Te6edf3to Te6edf3send Te6edf3image Te6edf3$Tb4b4b4{Te6edf3i Tff7b72+ T79c0ff1Tb4b4b4}Tff7b72:`Tb4b4b4, Te6edf3subErrorTb4b4b4)Tb4b4b4;
T8b949e// we continue sending other images even if one fails
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

T8b949e// always scroll to bottom since we just sent a message
Te6edf3thisTb4b4b4.Te6edf3scrollMessagesToBottomTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// clear message inputs
Te6edf3thisTb4b4b4.Te6edf3newMessageText Tff7b72= Ta5d6ff"Ta5d6ff"Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3saveDraftTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3newMessageImages Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3newMessageImageUrls Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3newMessageAudio Tff7b72= Te6edf3nullTb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3newMessageTelemetry Tff7b72= Te6edf3nullTb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3newMessageFiles Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3clearFileInputTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
T8b949e// show error
Tff7b72const Te6edf3message Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72?Tff7b72? Ta5d6ff"Ta5d6fffailed to send messageTa5d6ff"Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3finally Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3isSendingMessage Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3cancelSendingMessageTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
T8b949e// get lxmf message hash else do nothing
Tff7b72const Te6edf3lxmfMessageHash Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3lxmfMessageHashTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

Te6edf3try Tb4b4b4{
T8b949e// cancel sending lxmf message
Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3lxmfTff7b72-Te6edf3messagesTff7b72/Te6edf3$Tb4b4b4{Te6edf3lxmfMessageHashTb4b4b4}Tff7b72/Te6edf3cancel`Tb4b4b4)Tb4b4b4;

T8b949e// get lxmf message from response
Tff7b72const Te6edf3lxmfMessage Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// update lxmf message in ui
Te6edf3thisTb4b4b4.Te6edf3onLxmfMessageUpdatedTb4b4b4(Te6edf3lxmfMessageTb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
T8b949e// show error
Tff7b72const Te6edf3message Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72?Tff7b72? Ta5d6ff"Ta5d6fffailed to cancel messageTa5d6ff"Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3retrySendingMessageTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
T8b949e// force delete existing message
Te6edf3await Te6edf3thisTb4b4b4.Te6edf3deleteChatItemTb4b4b4(Te6edf3chatItemTb4b4b4, Tffa657falseTb4b4b4)Tb4b4b4;

Te6edf3try Tb4b4b4{
T8b949e// send message to reticulum
Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3lxmfTff7b72-Te6edf3messagesTff7b72/Te6edf3send`Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTb4b4b4: Tb4b4b4{
Te6edf3destination_hashTb4b4b4: Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3contentTb4b4b4: Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3contentTb4b4b4,
Te6edf3fieldsTb4b4b4: Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// add outbound message to ui
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3isLxmfMessageInUiTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTb4b4b4: Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4,
Te6edf3lxmf_messageTb4b4b4: Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4,
Te6edf3is_outboundTb4b4b4: Tffa657trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// always scroll to bottom since we just sent a message
Te6edf3thisTb4b4b4.Te6edf3scrollMessagesToBottomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
T8b949e// show error
Tff7b72const Te6edf3message Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72?Tff7b72? Ta5d6ff"Ta5d6fffailed to send messageTa5d6ff"Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3retryAllFailedOrCancelledMessagesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3failedItems Tff7b72= Te6edf3thisTb4b4b4.Te6edf3selectedPeerChatItemsTb4b4b4.Te6edf3filterTb4b4b4(
Tb4b4b4(Te6edf3itemTb4b4b4) Tff7b72=Tff7b72> Te6edf3itemTb4b4b4.Te6edf3is_outbound Tff7b72&Tff7b72& Tb4b4b4[Ta5d6ff"Ta5d6fffailedTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffcancelledTa5d6ff"Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3stateTb4b4b4)
Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3failedItemsTb4b4b4.Te6edf3length Tff7b72=Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72returnTb4b4b4;

Tff7b72if Tb4b4b4(
Tff7b72!Tb4b4b4(Te6edf3await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(
`Te6edf3Are Te6edf3you Te6edf3sure Te6edf3you Te6edf3want Te6edf3to Te6edf3retry Te6edf3sending Te6edf3all Te6edf3$Tb4b4b4{Te6edf3failedItemsTb4b4b4.Te6edf3lengthTb4b4b4} Te6edf3failedTff7b72/Te6edf3cancelled Te6edf3messagesTff7b72?`
Tb4b4b4)Tb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72for Tb4b4b4(Tff7b72const Te6edf3item Te6edf3of Te6edf3failedItemsTb4b4b4) Tb4b4b4{
Te6edf3await Te6edf3thisTb4b4b4.Te6edf3retrySendingMessageTb4b4b4(Te6edf3itemTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3shareLocationTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3toastKey Tff7b72= Ta5d6ff"Ta5d6fflocation_shareTa5d6ff"Tb4b4b4;
Te6edf3try Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3location_source Tff7b72=Tff7b72=Tff7b72= Ta5d6ff"Ta5d6ffmanualTa5d6ff"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3lat Tff7b72= Te6edf3parseFloatTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3location_manual_latTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3lon Tff7b72= Te6edf3parseFloatTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3location_manual_lonTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3alt Tff7b72= Te6edf3parseFloatTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3location_manual_altTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3isNaNTb4b4b4(Te6edf3latTb4b4b4) Tff7b72|Tff7b72| Te6edf3isNaNTb4b4b4(Te6edf3lonTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid manual coordinates in settingsTa5d6ff"Tb4b4b4, T79c0ff5000Tb4b4b4, Te6edf3toastKeyTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Te6edf3thisTb4b4b4.Te6edf3newMessageTelemetry Tff7b72= Tb4b4b4{
Te6edf3latitudeTb4b4b4: Te6edf3latTb4b4b4,
Te6edf3longitudeTb4b4b4: Te6edf3lonTb4b4b4,
Te6edf3altitudeTb4b4b4: Te6edf3isNaNTb4b4b4(Te6edf3altTb4b4b4) Tff7b72? T79c0ff0 Tff7b72: Te6edf3altTb4b4b4,
Te6edf3speedTb4b4b4: T79c0ff0Tb4b4b4,
Te6edf3bearingTb4b4b4: T79c0ff0Tb4b4b4,
Te6edf3accuracyTb4b4b4: T79c0ff0Tb4b4b4,
Te6edf3last_updateTb4b4b4: Te6edf3MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72/ T79c0ff1000Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3sendMessageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.location_sentTa5d6ff"Tb4b4b4)Tb4b4b4, T79c0ff3000Tb4b4b4, Te6edf3toastKeyTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72if Tb4b4b4(Tff7b72!Te6edf3navigatorTb4b4b4.Te6edf3geolocationTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmap.geolocation_not_supportedTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Te6edf3ToastUtilsTb4b4b4.Te6edf3loadingTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.fetching_locationTa5d6ff"Tb4b4b4)Tb4b4b4, T79c0ff0Tb4b4b4, Te6edf3toastKeyTb4b4b4)Tb4b4b4;

Te6edf3navigatorTb4b4b4.Te6edf3geolocationTb4b4b4.Te6edf3getCurrentPositionTb4b4b4(
Tb4b4b4(Te6edf3positionTb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3newMessageTelemetry Tff7b72= Tb4b4b4{
Te6edf3latitudeTb4b4b4: Te6edf3positionTb4b4b4.Te6edf3coordsTb4b4b4.Te6edf3latitudeTb4b4b4,
Te6edf3longitudeTb4b4b4: Te6edf3positionTb4b4b4.Te6edf3coordsTb4b4b4.Te6edf3longitudeTb4b4b4,
Te6edf3altitudeTb4b4b4: Te6edf3positionTb4b4b4.Te6edf3coordsTb4b4b4.Te6edf3altitude Tff7b72|Tff7b72| T79c0ff0Tb4b4b4,
Te6edf3speedTb4b4b4: Tb4b4b4(Te6edf3positionTb4b4b4.Te6edf3coordsTb4b4b4.Te6edf3speed Tff7b72|Tff7b72| T79c0ff0Tb4b4b4) Tff7b72* T79c0ff3.6Tb4b4b4, T8b949e// m/s to km/h
Te6edf3bearingTb4b4b4: Te6edf3positionTb4b4b4.Te6edf3coordsTb4b4b4.Te6edf3heading Tff7b72|Tff7b72| T79c0ff0Tb4b4b4,
Te6edf3accuracyTb4b4b4: Te6edf3positionTb4b4b4.Te6edf3coordsTb4b4b4.Te6edf3accuracy Tff7b72|Tff7b72| T79c0ff0Tb4b4b4,
Te6edf3last_updateTb4b4b4: Te6edf3MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72/ T79c0ff1000Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3sendMessageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.location_sentTa5d6ff"Tb4b4b4)Tb4b4b4, T79c0ff3000Tb4b4b4, Te6edf3toastKeyTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4(Te6edf3errorTb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(
`Te6edf3Failed Te6edf3to Te6edf3get Te6edf3locationTff7b72: Te6edf3$Tb4b4b4{Te6edf3errorTb4b4b4.Te6edf3messageTb4b4b4}Tb4b4b4. Te6edf3Try Te6edf3setting Te6edf3location Te6edf3manually Tff7b72in Te6edf3SettingsTb4b4b4.`Tb4b4b4,
T79c0ff5000Tb4b4b4,
Te6edf3toastKey
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Te6edf3enableHighAccuracyTb4b4b4: Tffa657trueTb4b4b4,
Te6edf3timeoutTb4b4b4: T79c0ff30000Tb4b4b4,
Te6edf3maximumAgeTb4b4b4: T79c0ff0Tb4b4b4,
Tb4b4b4}
Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(`Te6edf3ErrorTff7b72: Te6edf3$Tb4b4b4{Te6edf3eTb4b4b4.Te6edf3messageTb4b4b4}`Tb4b4b4, T79c0ff5000Tb4b4b4, Te6edf3toastKeyTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3requestLocationTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tff7b72returnTb4b4b4;

T8b949e// Send a telemetry request command
Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3lxmfTff7b72-Te6edf3messagesTff7b72/Te6edf3send`Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTb4b4b4: Tb4b4b4{
Te6edf3destination_hashTb4b4b4: Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3contentTb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3fieldsTb4b4b4: Tb4b4b4{
Te6edf3commandsTb4b4b4: Tb4b4b4[Tb4b4b4{ Ta5d6ff"Ta5d6ff0x01Ta5d6ff"Tff7b72: Te6edf3MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72/ T79c0ff1000Tb4b4b4) Tb4b4b4}Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.location_request_sentTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.failed_send_location_requestTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3viewLocationOnMapTb4b4b4(Te6edf3locationTb4b4b4) Tb4b4b4{
T8b949e// navigate to map and center on location
Te6edf3thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTb4b4b4: Ta5d6ff"Ta5d6ffmapTa5d6ff"Tb4b4b4,
Te6edf3queryTb4b4b4: Tb4b4b4{
Te6edf3latTb4b4b4: Te6edf3locationTb4b4b4.Te6edf3latitudeTb4b4b4,
Te6edf3lonTb4b4b4: Te6edf3locationTb4b4b4.Te6edf3longitudeTb4b4b4,
Te6edf3zoomTb4b4b4: T79c0ff15Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isTelemetryOnlyTb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hasContent Tff7b72= Te6edf3msgTb4b4b4.Te6edf3content Tff7b72&Tff7b72& Te6edf3msgTb4b4b4.Te6edf3contentTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72!Tff7b72=Tff7b72= Ta5d6ff"Ta5d6ff"Tb4b4b4;
Tff7b72const Te6edf3hasAttachments Tff7b72= Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3image Tff7b72|Tff7b72| Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3audio Tff7b72|Tff7b72| Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3file_attachmentsTb4b4b4;
Tff7b72const Te6edf3hasTelemetry Tff7b72= Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3telemetry Tff7b72|Tff7b72| Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3telemetry_streamTb4b4b4;
Tff7b72const Te6edf3hasCommands Tff7b72= Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3commands Tff7b72&Tff7b72& Te6edf3msgTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3commandsTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tff7b72=Tff7b72> Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ff0x01Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4;

Tff7b72return Tff7b72!Te6edf3hasContent Tff7b72&Tff7b72& Tff7b72!Te6edf3hasAttachments Tff7b72&Tff7b72& Tb4b4b4(Te6edf3hasTelemetry Tff7b72|Tff7b72| Te6edf3hasCommandsTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3toggleTrackingTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3hash Tff7b72= Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4;
Te6edf3try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3telemetryTff7b72/Te6edf3trackingTff7b72/Te6edf3$Tb4b4b4{Te6edf3hashTb4b4b4}Tff7b72/Te6edf3toggle`Tb4b4b4, Tb4b4b4{
Te6edf3is_trackingTb4b4b4: Tff7b72!Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3is_trackingTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
T8b949e// Emit event to parent to update peer status
Te6edf3thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"Ta5d6ffupdate-peer-trackingTa5d6ff"Tb4b4b4, Tb4b4b4{
Te6edf3destination_hashTb4b4b4: Te6edf3hashTb4b4b4,
Te6edf3is_trackingTb4b4b4: Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3is_trackingTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3is_tracking Tff7b72? Ta5d6ff"Ta5d6ffLive tracking enabledTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffLive tracking disabledTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Ta5d6ffFailed to toggle trackingTa5d6ff"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Ta5d6ffFailed to update tracking statusTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3formatTimeAgoTb4b4b4: Te6edf3function Tb4b4b4(Te6edf3datetimeStringTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatTimeAgoTb4b4b4(Te6edf3datetimeStringTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatDestinationHashTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatDestinationHashTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3copyHashTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
Te6edf3await Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3writeTextTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.hash_copiedTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.failed_to_copy_hashTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3formatBytesTb4b4b4: Te6edf3function Tb4b4b4(Te6edf3bytesTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3bytesTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3base64ByteLengthTb4b4b4(Te6edf3base64StringTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3base64StringTb4b4b4) Tb4b4b4{
Tff7b72return T79c0ff0Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3padding Tff7b72= Tb4b4b4(Te6edf3base64StringTb4b4b4.Te6edf3matchTb4b4b4(Tff7b72/Tff7b72=Tff7b72+Te6edf3$Tff7b72/Tb4b4b4) Tff7b72|Tff7b72| Tb4b4b4[Ta5d6ff"Ta5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72return Te6edf3MathTb4b4b4.Te6edf3floorTb4b4b4(Tb4b4b4(Te6edf3base64StringTb4b4b4.Te6edf3length Tff7b72* T79c0ff3Tb4b4b4) Tff7b72/ T79c0ff4Tb4b4b4) Tff7b72- Te6edf3paddingTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatBase64BytesTb4b4b4(Te6edf3base64StringTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3thisTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3base64ByteLengthTb4b4b4(Te6edf3base64StringTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openConversationPopoutTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3destinationHash Tff7b72= Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hash Tff7b72|Tff7b72| Ta5d6ff"Ta5d6ff"Tb4b4b4;
Tff7b72const Te6edf3encodedHash Tff7b72= Te6edf3encodeURIComponentTb4b4b4(Te6edf3destinationHashTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3url Tff7b72= `Te6edf3$Tb4b4b4{Te6edf3windowTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3originTb4b4b4}Te6edf3$Tb4b4b4{Te6edf3windowTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3pathnameTb4b4b4}#Tff7b72/Te6edf3popoutTff7b72/Te6edf3messagesTff7b72/Te6edf3$Tb4b4b4{Te6edf3encodedHashTb4b4b4}`Tb4b4b4;
Te6edf3windowTb4b4b4.Te6edf3openTb4b4b4(Te6edf3urlTb4b4b4, Ta5d6ff"Ta5d6ff_blankTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffwidth=960,height=720,noopenerTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3onStartCallTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3telephoneTff7b72/Te6edf3callTff7b72/Te6edf3$Tb4b4b4{Te6edf3thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4}`Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3message Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72?Tff7b72? Ta5d6ff"Ta5d6ffFailed to start callTa5d6ff"Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3pasteFromClipboardTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3try Tb4b4b4{
Tff7b72const Te6edf3text Tff7b72= Te6edf3await Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3readTextTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3textTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3input Tff7b72= Te6edf3thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"Ta5d6ffmessage-inputTa5d6ff"Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Te6edf3inputTb4b4b4.Te6edf3selectionStartTb4b4b4;
Tff7b72const Te6edf3end Tff7b72= Te6edf3inputTb4b4b4.Te6edf3selectionEndTb4b4b4;
Tff7b72const Te6edf3currentText Tff7b72= Te6edf3thisTb4b4b4.Te6edf3newMessageText Tff7b72|Tff7b72| Ta5d6ff"Ta5d6ff"Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3newMessageText Tff7b72= Te6edf3currentTextTb4b4b4.Te6edf3substringTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3startTb4b4b4) Tff7b72+ Te6edf3text Tff7b72+ Te6edf3currentTextTb4b4b4.Te6edf3substringTb4b4b4(Te6edf3endTb4b4b4)Tb4b4b4;

Te6edf3thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Te6edf3inputTb4b4b4.Te6edf3focusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3newCursorPos Tff7b72= Te6edf3start Tff7b72+ Te6edf3textTb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3inputTb4b4b4.Te6edf3setSelectionRangeTb4b4b4(Te6edf3newCursorPosTb4b4b4, Te6edf3newCursorPosTb4b4b4)Tb4b4b4;
T8b949e// adjust height
Te6edf3inputTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3height Tff7b72= Ta5d6ff"Ta5d6ffautoTa5d6ff"Tb4b4b4;
Te6edf3inputTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3height Tff7b72= Te6edf3MathTb4b4b4.Te6edf3minTb4b4b4(Te6edf3inputTb4b4b4.Te6edf3scrollHeightTb4b4b4, T79c0ff200Tb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ffpxTa5d6ff"Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3errTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Ta5d6ffFailed to read clipboard contents: Ta5d6ff"Tb4b4b4, Te6edf3errTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.failed_read_clipboardTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onFileInputChangeTb4b4b4: Te6edf3function Tb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3file Te6edf3of Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3filesTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3newMessageFilesTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3clearFileInputTb4b4b4: Te6edf3function Tb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"Ta5d6fffile-inputTa5d6ff"Tb4b4b4]Tb4b4b4.Te6edf3value Tff7b72= Te6edf3nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3removeImageAttachmentTb4b4b4(Te6edf3indexTb4b4b4) Tb4b4b4{
T8b949e// ask user to confirm removing image attachment
Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Te6edf3await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.remove_image_confirmTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// remove image
Te6edf3thisTb4b4b4.Te6edf3newMessageImagesTb4b4b4.Te6edf3spliceTb4b4b4(Te6edf3indexTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3newMessageImageUrlsTb4b4b4.Te6edf3spliceTb4b4b4(Te6edf3indexTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onImageSelectedTb4b4b4: Te6edf3function Tb4b4b4(Te6edf3imageBlobTb4b4b4) Tb4b4b4{
T8b949e// update selected file
Tff7b72const Te6edf3index Tff7b72= Te6edf3thisTb4b4b4.Te6edf3newMessageImagesTb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3newMessageImagesTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3imageBlobTb4b4b4)Tb4b4b4;

T8b949e// update image url when file is read
Tff7b72const Te6edf3fileReader Tff7b72= Te6edf3new Te6edf3FileReaderTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3fileReaderTb4b4b4.Te6edf3onload Tff7b72= Tb4b4b4(Te6edf3eventTb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3newMessageImageUrlsTb4b4b4[Te6edf3indexTb4b4b4] Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3resultTb4b4b4;
Tb4b4b4}Tb4b4b4;

T8b949e// convert image to data url
Te6edf3fileReaderTb4b4b4.Te6edf3readAsDataURLTb4b4b4(Te6edf3imageBlobTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3startRecordingAudioAttachmentTb4b4b4(Te6edf3argsTb4b4b4) Tb4b4b4{
T8b949e// do nothing if already recording
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3isRecordingAudioAttachmentTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// ask user to confirm recording new audio attachment, if an existing audio attachment exists
Tff7b72if Tb4b4b4(
Te6edf3thisTb4b4b4.Te6edf3newMessageAudio Tff7b72&Tff7b72&
Tff7b72!Tb4b4b4(Te6edf3await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(
Ta5d6ff"Ta5d6ffAn audio recording is already attached. A new recording will replace it. Do you want to continue?Ta5d6ff"
Tb4b4b4)Tb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// handle selected codec
Tff7b72switch Tb4b4b4(Te6edf3argsTb4b4b4.Te6edf3codecTb4b4b4) Tb4b4b4{
Tff7b72case Ta5d6ff"Ta5d6ffcodec2Ta5d6ff"Tb4b4b4: Tb4b4b4{
T8b949e// start recording microphone
Te6edf3thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorderCodec Tff7b72= Ta5d6ff"Ta5d6ffcodec2Ta5d6ff"Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorder Tff7b72= Te6edf3new Te6edf3Codec2MicrophoneRecorderTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorderTb4b4b4.Te6edf3codec2Mode Tff7b72= Te6edf3argsTb4b4b4.Te6edf3modeTb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3audioAttachmentRecordingStartedAt Tff7b72= Te6edf3DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3isRecordingAudioAttachment Tff7b72= Te6edf3await Te6edf3thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorderTb4b4b4.Te6edf3startTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// update recording time in ui every second
Te6edf3thisTb4b4b4.Te6edf3audioAttachmentRecordingDuration Tff7b72= Te6edf3UtilsTb4b4b4.Te6edf3formatMinutesSecondsTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3audioAttachmentRecordingTimer Tff7b72= Te6edf3setIntervalTb4b4b4(Tb4b4b4(Tb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Tff7b72const Te6edf3recordingDurationMillis Tff7b72= Te6edf3DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3thisTb4b4b4.Te6edf3audioAttachmentRecordingStartedAtTb4b4b4;
Tff7b72const Te6edf3recordingDurationSeconds Tff7b72= Te6edf3recordingDurationMillis Tff7b72/ T79c0ff1000Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3audioAttachmentRecordingDuration Tff7b72= Te6edf3UtilsTb4b4b4.Te6edf3formatMinutesSecondsTb4b4b4(Te6edf3recordingDurationSecondsTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff1000Tb4b4b4)Tb4b4b4;

T8b949e// alert if failed to start recording
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3isRecordingAudioAttachmentTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.failed_start_recordingTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"Ta5d6ffopusTa5d6ff"Tb4b4b4: Tb4b4b4{
T8b949e// start recording microphone
Te6edf3thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorderCodec Tff7b72= Ta5d6ff"Ta5d6ffopusTa5d6ff"Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorder Tff7b72= Te6edf3new Te6edf3MicrophoneRecorderTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3audioAttachmentRecordingStartedAt Tff7b72= Te6edf3DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3isRecordingAudioAttachment Tff7b72= Te6edf3await Te6edf3thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorderTb4b4b4.Te6edf3startTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// update recording time in ui every second
Te6edf3thisTb4b4b4.Te6edf3audioAttachmentRecordingDuration Tff7b72= Te6edf3UtilsTb4b4b4.Te6edf3formatMinutesSecondsTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3audioAttachmentRecordingTimer Tff7b72= Te6edf3setIntervalTb4b4b4(Tb4b4b4(Tb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Tff7b72const Te6edf3recordingDurationMillis Tff7b72= Te6edf3DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3thisTb4b4b4.Te6edf3audioAttachmentRecordingStartedAtTb4b4b4;
Tff7b72const Te6edf3recordingDurationSeconds Tff7b72= Te6edf3recordingDurationMillis Tff7b72/ T79c0ff1000Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3audioAttachmentRecordingDuration Tff7b72= Te6edf3UtilsTb4b4b4.Te6edf3formatMinutesSecondsTb4b4b4(Te6edf3recordingDurationSecondsTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff1000Tb4b4b4)Tb4b4b4;

T8b949e// alert if failed to start recording
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3isRecordingAudioAttachmentTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.failed_start_recordingTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72defaultTff7b72: Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(`Te6edf3Unhandled Te6edf3microphone Te6edf3recorder Te6edf3codecTff7b72: Te6edf3$Tb4b4b4{Te6edf3argsTb4b4b4.Te6edf3codecTb4b4b4}`Tb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3stopRecordingAudioAttachmentTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// clear audio recording timer
Te6edf3clearIntervalTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3audioAttachmentRecordingTimerTb4b4b4)Tb4b4b4;

T8b949e// do nothing if not recording
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3thisTb4b4b4.Te6edf3isRecordingAudioAttachmentTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// stop recording microphone and get audio
Te6edf3thisTb4b4b4.Te6edf3isRecordingAudioAttachment Tff7b72= Tffa657falseTb4b4b4;
Tff7b72const Te6edf3audio Tff7b72= Te6edf3await Te6edf3thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorderTb4b4b4.Te6edf3stopTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// handle audio based on codec
Tff7b72switch Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorderCodecTb4b4b4) Tb4b4b4{
Tff7b72case Ta5d6ff"Ta5d6ffcodec2Ta5d6ff"Tb4b4b4: Tb4b4b4{
T8b949e// do nothing if no audio was provided
Tff7b72if Tb4b4b4(Te6edf3audioTb4b4b4.Te6edf3length Tff7b72=Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// decode codec2 audio back to wav so we can show a preview audio player before user sends it
Tff7b72const Te6edf3codec2Mode Tff7b72= Te6edf3thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorderTb4b4b4.Te6edf3codec2ModeTb4b4b4;
Tff7b72const Te6edf3decoded Tff7b72= Te6edf3await Te6edf3Codec2LibTb4b4b4.Te6edf3runDecodeTb4b4b4(Te6edf3codec2ModeTb4b4b4, Te6edf3new Te6edf3Uint8ArrayTb4b4b4(Te6edf3audioTb4b4b4)Tb4b4b4)Tb4b4b4;

T8b949e// convert decoded codec2 to wav audio and create a blob
Tff7b72const Te6edf3wavAudio Tff7b72= Te6edf3await Te6edf3Codec2LibTb4b4b4.Te6edf3rawToWavTb4b4b4(Te6edf3decodedTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wavBlob Tff7b72= Te6edf3new Te6edf3BlobTb4b4b4(Tb4b4b4[Te6edf3wavAudioTb4b4b4]Tb4b4b4, Tb4b4b4{
Te6edf3typeTb4b4b4: Ta5d6ff"Ta5d6ffaudio/wavTa5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// determine audio mode
Te6edf3var Te6edf3audioMode Tff7b72= Te6edf3nullTb4b4b4;
Tff7b72switch Tb4b4b4(Te6edf3codec2ModeTb4b4b4) Tb4b4b4{
Tff7b72case Ta5d6ff"Ta5d6ff1200Ta5d6ff"Tb4b4b4: Tb4b4b4{
Te6edf3audioMode Tff7b72= T79c0ff0x04Tb4b4b4; T8b949e// LXMF.AM_CODEC2_1200
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"Ta5d6ff3200Ta5d6ff"Tb4b4b4: Tb4b4b4{
Te6edf3audioMode Tff7b72= T79c0ff0x09Tb4b4b4; T8b949e// LXMF.AM_CODEC2_3200
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72defaultTff7b72: Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(`Te6edf3Unhandled Te6edf3microphone Te6edf3recorder Te6edf3codec2ModeTff7b72: Te6edf3$Tb4b4b4{Te6edf3codec2ModeTb4b4b4}`Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}

T8b949e// update message audio attachment
Te6edf3thisTb4b4b4.Te6edf3newMessageAudio Tff7b72= Tb4b4b4{
Te6edf3audio_modeTb4b4b4: Te6edf3audioModeTb4b4b4,
Te6edf3audio_blobTb4b4b4: Te6edf3new Te6edf3BlobTb4b4b4(Tb4b4b4[Te6edf3audioTb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3audio_preview_urlTb4b4b4: Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3wavBlobTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;

Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"Ta5d6ffopusTa5d6ff"Tb4b4b4: Tb4b4b4{
T8b949e// do nothing if no audio was provided
Tff7b72if Tb4b4b4(Te6edf3audioTb4b4b4.Te6edf3size Tff7b72=Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// update message audio attachment
Te6edf3thisTb4b4b4.Te6edf3newMessageAudio Tff7b72= Tb4b4b4{
Te6edf3audio_modeTb4b4b4: T79c0ff0x10Tb4b4b4, T8b949e// LXMF.AM_OPUS_OGG
Te6edf3audio_blobTb4b4b4: Te6edf3audioTb4b4b4, T8b949e// opus microphone recorder returns a blob
Te6edf3audio_preview_urlTb4b4b4: Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3audioTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;

Tff7b72breakTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3removeAudioAttachmentTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// ask user to confirm removing audio attachment
Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Te6edf3await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(Te6edf3thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"Ta5d6ffmessages.remove_audio_confirmTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// remove audio
Te6edf3thisTb4b4b4.Te6edf3newMessageAudio Tff7b72= Te6edf3nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3removeFileAttachmentTb4b4b4: Te6edf3function Tb4b4b4(Te6edf3fileTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3newMessageFiles Tff7b72= Te6edf3thisTb4b4b4.Te6edf3newMessageFilesTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3newMessageFileTb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Tff7b72return Te6edf3newMessageFile Tff7b72!Tff7b72=Tff7b72= Te6edf3fileTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3addNewLineTb4b4b4: Te6edf3function Tb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// get cursor position for message input
Tff7b72const Te6edf3input Tff7b72= Te6edf3thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"Ta5d6ffmessage-inputTa5d6ff"Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3cursorPosition Tff7b72= Te6edf3inputTb4b4b4.Te6edf3selectionStartTb4b4b4;

T8b949e// insert a newline character after the cursor position
Tff7b72const Te6edf3text Tff7b72= Te6edf3thisTb4b4b4.Te6edf3newMessageTextTb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3newMessageText Tff7b72= Te6edf3textTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3cursorPositionTb4b4b4) Tff7b72+ Ta5d6ff"Tffea00\nTa5d6ff" Tff7b72+ Te6edf3textTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3cursorPositionTb4b4b4)Tb4b4b4;

T8b949e// move cursor to the position after the added newline
Tff7b72const Te6edf3newCursorPosition Tff7b72= Te6edf3cursorPosition Tff7b72+ T79c0ff1Tb4b4b4;
Te6edf3thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Te6edf3inputTb4b4b4.Te6edf3selectionStart Tff7b72= Te6edf3newCursorPositionTb4b4b4;
Te6edf3inputTb4b4b4.Te6edf3selectionEnd Tff7b72= Te6edf3newCursorPositionTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onEnterPressedTb4b4b4: Te6edf3function Tb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// add new line on mobile
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3isMobileTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3addNewLineTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// send message on desktop
Te6edf3thisTb4b4b4.Te6edf3sendMessageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onShiftEnterPressedTb4b4b4: Te6edf3function Tb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3addNewLineTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3addFilesToMessageTb4b4b4: Te6edf3function Tb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"Ta5d6fffile-inputTa5d6ff"Tb4b4b4]Tb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3findConversationTb4b4b4: Te6edf3function Tb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3thisTb4b4b4.Te6edf3conversationsTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3conversationTb4b4b4) Tff7b72=Tff7b72> Tb4b4b4{
Tff7b72return Te6edf3conversationTb4b4b4.Te6edf3destination_hash Tff7b72=Tff7b72=Tff7b72= Te6edf3destinationHashTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3async Te6edf3markConversationAsReadTb4b4b4(Te6edf3conversationTb4b4b4) Tb4b4b4{
T8b949e// manually mark conversation read in memory to avoid delay updating ui
Te6edf3conversationTb4b4b4.Te6edf3is_unread Tff7b72= Tffa657falseTb4b4b4;

T8b949e// mark conversation as read on server
Te6edf3try Tb4b4b4{
Te6edf3await Te6edf3windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(`Tff7b72/Te6edf3apiTff7b72/Te6edf3v1Tff7b72/Te6edf3lxmfTff7b72/Te6edf3conversationsTff7b72/Te6edf3$Tb4b4b4{Te6edf3conversationTb4b4b4.Te6edf3destination_hashTb4b4b4}Tff7b72/Te6edf3markTff7b72-Te6edf3asTff7b72-Te6edf3read`Tb4b4b4)Tb4b4b4;
Tb4b4b4} Te6edf3catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
T8b949e// do nothing if failed to mark as read
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// reload conversations
Te6edf3thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"Ta5d6ffreload-conversationsTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3toggleSentMessageInfoTb4b4b4: Te6edf3function Tb4b4b4(Te6edf3messageHashTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3expandedMessageInfo Tff7b72=Tff7b72=Tff7b72= Te6edf3messageHashTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3expandedMessageInfo Tff7b72= Te6edf3nullTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3expandedMessageInfo Tff7b72= Te6edf3messageHashTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3toggleReceivedMessageInfoTb4b4b4: Te6edf3function Tb4b4b4(Te6edf3messageHashTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3thisTb4b4b4.Te6edf3expandedMessageInfo Tff7b72=Tff7b72=Tff7b72= Te6edf3messageHashTb4b4b4) Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3expandedMessageInfo Tff7b72= Te6edf3nullTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3thisTb4b4b4.Te6edf3expandedMessageInfo Tff7b72= Te6edf3messageHashTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3getMessageInfoLinesTb4b4b4: Te6edf3function Tb4b4b4(Te6edf3lxmfMessageTb4b4b4, Te6edf3isOutboundTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3lines Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3isOutboundTb4b4b4) Tb4b4b4{
Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(`Te6edf3CreatedTff7b72: Te6edf3$Tb4b4b4{Te6edf3UtilsTb4b4b4.Te6edf3convertUnixMillisToLocalDateTimeStringTb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3timestamp Tff7b72* T79c0ff1000Tb4b4b4)Tb4b4b4}`Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(`Te6edf3SentTff7b72: Te6edf3$Tb4b4b4{Te6edf3UtilsTb4b4b4.Te6edf3convertUnixMillisToLocalDateTimeStringTb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3timestamp Tff7b72* T79c0ff1000Tb4b4b4)Tb4b4b4}`Tb4b4b4)Tb4b4b4;
Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(`Te6edf3ReceivedTff7b72: Te6edf3$Tb4b4b4{Te6edf3UtilsTb4b4b4.Te6edf3convertDateTimeToLocalDateTimeStringTb4b4b4(Te6edf3new Te6edf3DateTb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3created_atTb4b4b4)Tb4b4b4)Tb4b4b4}`Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(`Te6edf3MethodTff7b72: Te6edf3$Tb4b4b4{Te6edf3lxmfMessageTb4b4b4.Te6edf3method Tff7b72?Tff7b72? Ta5d6ff"Ta5d6ffunknownTa5d6ff"Tb4b4b4}`Tb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3audioTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3audioSize Tff7b72=
Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3audioTb4b4b4.Te6edf3audio_size Tff7b72?Tff7b72?
Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3audioTb4b4b4.Te6edf3audio_bytes Tff7b72? Te6edf3atobTb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3audioTb4b4b4.Te6edf3audio_bytesTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72: T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3audioSize Tff7b72> T79c0ff0Tb4b4b4) Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(`Te6edf3Audio Te6edf3AttachmentTff7b72: Te6edf3$Tb4b4b4{Te6edf3thisTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3audioSizeTb4b4b4)Tb4b4b4}`Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3imageTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3imageSize Tff7b72=
Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3imageTb4b4b4.Te6edf3image_size Tff7b72?Tff7b72?
Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3imageTb4b4b4.Te6edf3image_bytes Tff7b72? Te6edf3atobTb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3imageTb4b4b4.Te6edf3image_bytesTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72: T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3imageSize Tff7b72> T79c0ff0Tb4b4b4) Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(`Te6edf3Image Te6edf3AttachmentTff7b72: Te6edf3$Tb4b4b4{Te6edf3thisTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3imageSizeTb4b4b4)Tb4b4b4}`Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3file_attachmentsTb4b4b4) Tb4b4b4{
Te6edf3let Te6edf3filesLength Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72const Te6edf3fileAttachments Tff7b72= Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3file_attachmentsTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3fileAttachment Te6edf3of Te6edf3fileAttachmentsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3fileBytesLength Tff7b72=
Te6edf3fileAttachmentTb4b4b4.Te6edf3file_size Tff7b72?Tff7b72?
Tb4b4b4(Te6edf3fileAttachmentTb4b4b4.Te6edf3file_bytes Tff7b72? Te6edf3atobTb4b4b4(Te6edf3fileAttachmentTb4b4b4.Te6edf3file_bytesTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72: T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3filesLength Tff7b72+Tff7b72= Te6edf3fileBytesLengthTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3filesLength Tff7b72> T79c0ff0Tb4b4b4) Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(`Te6edf3File Te6edf3AttachmentsTff7b72: Te6edf3$Tb4b4b4{Te6edf3thisTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3filesLengthTb4b4b4)Tb4b4b4}`Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isOutboundTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3quality Tff7b72!Tff7b72= Te6edf3nullTb4b4b4) Tb4b4b4{
Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(`Te6edf3Signal Te6edf3QualityTff7b72: Te6edf3$Tb4b4b4{Te6edf3lxmfMessageTb4b4b4.Te6edf3qualityTb4b4b4}Tff7b72%`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3rssi Tff7b72!Tff7b72= Te6edf3nullTb4b4b4) Tb4b4b4{
Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(`Te6edf3RSSITff7b72: Te6edf3$Tb4b4b4{Te6edf3lxmfMessageTb4b4b4.Te6edf3rssiTb4b4b4}Te6edf3dBm`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3snr Tff7b72!Tff7b72= Te6edf3nullTb4b4b4) Tb4b4b4{
Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(`Te6edf3SNRTff7b72: Te6edf3$Tb4b4b4{Te6edf3lxmfMessageTb4b4b4.Te6edf3snrTb4b4b4}Te6edf3dB`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72return Te6edf3linesTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72<Tff7b72/Te6edf3scriptTff7b72>

Tff7b72<Te6edf3style Te6edf3scopedTff7b72>
Tb4b4b4.Te6edf3attachmentTff7b72-Te6edf3card Tb4b4b4{
Tb4b4b4@Te6edf3apply Te6edf3relative Te6edf3flex Te6edf3gapT79c0ff-3 Te6edf3border Te6edf3borderTff7b72-Te6edf3grayT79c0ff-200 Te6edf3darkTff7b72:Te6edf3borderTff7b72-Te6edf3zincT79c0ff-800 Te6edf3roundedT79c0ff-2Te6edf3xl Te6edf3pT79c0ff-3 Te6edf3shadowTff7b72-Te6edf3smTb4b4b4;
Te6edf3backgroundTff7b72-Te6edf3colorTff7b72: Te6edf3whiteTb4b4b4;
Tb4b4b4}
Tb4b4b4.Te6edf3dark Tb4b4b4.Te6edf3attachmentTff7b72-Te6edf3card Tb4b4b4{
Te6edf3backgroundTff7b72-Te6edf3colorTff7b72: Te6edf3rgbTb4b4b4(T79c0ff24 T79c0ff24 T79c0ff27Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4.Te6edf3attachmentTff7b72-Te6edf3card__preview Tb4b4b4{
Tb4b4b4@Te6edf3apply Te6edf3wT79c0ff-24 Te6edf3hT79c0ff-24 Te6edf3overflowTff7b72-Te6edf3hidden Te6edf3roundedTff7b72-Te6edf3xl Te6edf3bgTff7b72-Te6edf3grayT79c0ff-100 Te6edf3darkTff7b72:Te6edf3bgTff7b72-Te6edf3zincT79c0ff-800 Te6edf3cursorTff7b72-Te6edf3pointerTb4b4b4;
Tb4b4b4}
Tb4b4b4.Te6edf3attachmentTff7b72-Te6edf3card__body Tb4b4b4{
Tb4b4b4@Te6edf3apply Te6edf3flexT79c0ff-1Tb4b4b4;
Tb4b4b4}
Tb4b4b4.Te6edf3attachmentTff7b72-Te6edf3card__title Tb4b4b4{
Tb4b4b4@Te6edf3apply Te6edf3textTff7b72-Te6edf3sm Te6edf3fontTff7b72-Te6edf3semibold Te6edf3textTff7b72-Te6edf3grayT79c0ff-800 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3grayT79c0ff-100Tb4b4b4;
Tb4b4b4}
Tb4b4b4.Te6edf3attachmentTff7b72-Te6edf3card__meta Tb4b4b4{
Tb4b4b4@Te6edf3apply Te6edf3textTff7b72-Te6edf3xs Te6edf3textTff7b72-Te6edf3grayT79c0ff-500 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3grayT79c0ff-400Tb4b4b4;
Tb4b4b4}
Tb4b4b4.Te6edf3attachmentTff7b72-Te6edf3card__remove Tb4b4b4{
Tb4b4b4@Te6edf3apply Te6edf3absolute Te6edf3topT79c0ff-2 Te6edf3rightT79c0ff-2 Tff7b72inlineTff7b72-Te6edf3flex Te6edf3itemsTff7b72-Te6edf3center Te6edf3justifyTff7b72-Te6edf3center Te6edf3wT79c0ff-6 Te6edf3hT79c0ff-6 Te6edf3roundedTff7b72-Te6edf3full Te6edf3bgTff7b72-Te6edf3grayT79c0ff-200 Te6edf3darkTff7b72:Te6edf3bgTff7b72-Te6edf3zincT79c0ff-800 Te6edf3textTff7b72-Te6edf3grayT79c0ff-600 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3grayT79c0ff-200 Te6edf3hoverTff7b72:Te6edf3bgTff7b72-Te6edf3redT79c0ff-100 Te6edf3hoverTff7b72:Te6edf3textTff7b72-Te6edf3redT79c0ff-600 Te6edf3darkTff7b72:Te6edf3hoverTff7b72:Te6edf3bgTff7b72-Te6edf3redT79c0ff-900Tff7b72/T79c0ff40Tb4b4b4;
Tb4b4b4}
Tb4b4b4.Te6edf3attachmentTff7b72-Te6edf3chip Tb4b4b4{
Tb4b4b4@Te6edf3apply Te6edf3flex Te6edf3itemsTff7b72-Te6edf3center Te6edf3justifyTff7b72-Te6edf3between Te6edf3gapT79c0ff-2 Te6edf3border Te6edf3borderTff7b72-Te6edf3grayT79c0ff-200 Te6edf3darkTff7b72:Te6edf3borderTff7b72-Te6edf3zincT79c0ff-800 Te6edf3roundedTff7b72-Te6edf3full Te6edf3pxT79c0ff-3 Te6edf3pyT79c0ff-1 Te6edf3textTff7b72-Te6edf3xs Te6edf3shadowTff7b72-Te6edf3smTb4b4b4;
Te6edf3backgroundTff7b72-Te6edf3colorTff7b72: Te6edf3whiteTb4b4b4;
Tb4b4b4}
Tb4b4b4.Te6edf3dark Tb4b4b4.Te6edf3attachmentTff7b72-Te6edf3chip Tb4b4b4{
Te6edf3backgroundTff7b72-Te6edf3colorTff7b72: Te6edf3rgbTb4b4b4(T79c0ff24 T79c0ff24 T79c0ff27Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4.Te6edf3attachmentTff7b72-Te6edf3chip__remove Tb4b4b4{
Tb4b4b4@Te6edf3apply Tff7b72inlineTff7b72-Te6edf3flex Te6edf3itemsTff7b72-Te6edf3center Te6edf3justifyTff7b72-Te6edf3center Te6edf3textTff7b72-Te6edf3grayT79c0ff-500 Te6edf3darkTff7b72:Te6edf3textTff7b72-Te6edf3grayT79c0ff-300 Te6edf3hoverTff7b72:Te6edf3textTff7b72-Te6edf3redT79c0ff-500Tb4b4b4;
Tb4b4b4}
Tb4b4b4.Te6edf3attachmentTff7b72-Te6edf3actionTff7b72-Te6edf3button Tb4b4b4{
Tb4b4b4@Te6edf3apply Tff7b72inlineTff7b72-Te6edf3flex Te6edf3itemsTff7b72-Te6edf3center Te6edf3gapT79c0ff-1 Te6edf3roundedTff7b72-Te6edf3full Te6edf3border Te6edf3borderTff7b72-Te6edf3grayT79c0ff-200 Te6edf3pxT79c0ff-3 Te6edf3pyT79c0ff-1.5 Te6edf3textTff7b72-Te6edf3xs Te6edf3fontTff7b72-Te6edf3bold Te6edf3textTff7b72-Te6edf3grayT79c0ff-700 Te6edf3bgTff7b72-Te6edf3white Te6edf3shadowTff7b72-Te6edf3sm Te6edf3transitionTff7b72-Te6edf3all Tff7b72!Te6edf3importantTb4b4b4;
Tb4b4b4}
Tb4b4b4.Te6edf3attachmentTff7b72-Te6edf3actionTff7b72-Te6edf3buttonTff7b72:Te6edf3hover Tb4b4b4{
Tb4b4b4@Te6edf3apply Te6edf3bgTff7b72-Te6edf3grayT79c0ff-50 Te6edf3textTff7b72-Te6edf3grayT79c0ff-900 Te6edf3borderTff7b72-Te6edf3blueT79c0ff-400 Tff7b72!Te6edf3importantTb4b4b4;
Tb4b4b4}
Tb4b4b4.Te6edf3dark Tb4b4b4.Te6edf3attachmentTff7b72-Te6edf3actionTff7b72-Te6edf3button Tb4b4b4{
Tb4b4b4@Te6edf3apply Te6edf3borderTff7b72-Te6edf3zincT79c0ff-700 Te6edf3textTff7b72-Te6edf3zincT79c0ff-100 Te6edf3bgTff7b72-Te6edf3zincT79c0ff-900 Tff7b72!Te6edf3importantTb4b4b4;
Tb4b4b4}
Tb4b4b4.Te6edf3dark Tb4b4b4.Te6edf3attachmentTff7b72-Te6edf3actionTff7b72-Te6edf3buttonTff7b72:Te6edf3hover Tb4b4b4{
Tb4b4b4@Te6edf3apply Te6edf3bgTff7b72-Te6edf3zincT79c0ff-800 Te6edf3textTff7b72-Te6edf3white Te6edf3borderTff7b72-Te6edf3blueT79c0ff-500 Tff7b72!Te6edf3importantTb4b4b4;
Tb4b4b4}

Tb4b4b4.Te6edf3audioTff7b72-Te6edf3controlsTff7b72-Te6edf3light Tb4b4b4{
Te6edf3filterTb4b4b4: Te6edf3invertTb4b4b4(T79c0ff1Tb4b4b4) Te6edf3hueTff7b72-Te6edf3rotateTb4b4b4(T79c0ff180Te6edf3degTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tb4b4b4.Te6edf3dark Tb4b4b4.Te6edf3audioTff7b72-Te6edf3controlsTff7b72-Te6edf3light Tb4b4b4{
Te6edf3filterTb4b4b4: Te6edf3noneTb4b4b4;
Tb4b4b4}

Tb4b4b4.Te6edf3audioTff7b72-Te6edf3controlsTff7b72-Te6edf3dark Tb4b4b4{
Te6edf3filterTb4b4b4: Te6edf3noneTb4b4b4;
Tb4b4b4}

Tb4b4b4.Te6edf3dark Tb4b4b4.Te6edf3audioTff7b72-Te6edf3controlsTff7b72-Te6edf3dark Tb4b4b4{
Te6edf3filterTb4b4b4: Te6edf3invertTb4b4b4(T79c0ff1Tb4b4b4) Te6edf3hueTff7b72-Te6edf3rotateTb4b4b4(T79c0ff180Te6edf3degTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4.Te6edf3markdownTff7b72-Te6edf3content Tff7b72:Te6edf3deepTb4b4b4(Te6edf3pTb4b4b4) Tb4b4b4{
Te6edf3marginTb4b4b4: T79c0ff0.5Te6edf3rem T79c0ff0Tb4b4b4;
Tb4b4b4}

Tb4b4b4.Te6edf3markdownTff7b72-Te6edf3content Tff7b72:Te6edf3deepTb4b4b4(Tff7b72strongTb4b4b4) Tb4b4b4{
Te6edf3fontTff7b72-Te6edf3weightTff7b72: T79c0ff700Tb4b4b4;
Tb4b4b4}

Tb4b4b4.Te6edf3markdownTff7b72-Te6edf3content Tff7b72:Te6edf3deepTb4b4b4(Te6edf3emTb4b4b4) Tb4b4b4{
Te6edf3fontTff7b72-Te6edf3styleTff7b72: Te6edf3italicTb4b4b4;
Tb4b4b4}

Tb4b4b4.Te6edf3markdownTff7b72-Te6edf3content Tff7b72:Te6edf3deepTb4b4b4(Te6edf3preTb4b4b4) Tb4b4b4{
Te6edf3marginTb4b4b4: T79c0ff0.75Te6edf3rem T79c0ff0Tb4b4b4;
Tb4b4b4}

Tb4b4b4.Te6edf3markdownTff7b72-Te6edf3content Tff7b72:Te6edf3deepTb4b4b4(Te6edf3codeTb4b4b4) Tb4b4b4{
Te6edf3fontTff7b72-Te6edf3familyTff7b72: Te6edf3uiTff7b72-Te6edf3monospaceTb4b4b4, Te6edf3SFMonoTff7b72-Te6edf3RegularTb4b4b4, Te6edf3MenloTb4b4b4, Te6edf3MonacoTb4b4b4, Te6edf3ConsolasTb4b4b4, Ta5d6ff"Ta5d6ffLiberation MonoTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffCourier NewTa5d6ff"Tb4b4b4, Te6edf3monospaceTb4b4b4;
Tb4b4b4}

Tb4b4b4.Te6edf3markdownTff7b72-Te6edf3content Tff7b72:Te6edf3deepTb4b4b4(Te6edf3h1Tb4b4b4)Tb4b4b4,
Tb4b4b4.Te6edf3markdownTff7b72-Te6edf3content Tff7b72:Te6edf3deepTb4b4b4(Te6edf3h2Tb4b4b4)Tb4b4b4,
Tb4b4b4.Te6edf3markdownTff7b72-Te6edf3content Tff7b72:Te6edf3deepTb4b4b4(Te6edf3h3Tb4b4b4) Tb4b4b4{
Te6edf3lineTff7b72-Te6edf3heightTff7b72: T79c0ff1.2Tb4b4b4;
Tb4b4b4}
Tff7b72<Tff7b72/Te6edf3styleTff7b72>

Served by rngit 1.4.2 - Generated in 0.37s